必须有一个简单的方法来做到这一点,我无法相信没有.我已经通过网络进行了扫描,发现了20种不同的方法来查找当前用户所在的域名,但没有找到当前计算机的域名(或工作组).
在非托管c ++中,这可以通过以下方式检索:
WKSTA_INFO_100 *buf;
NetWkstaGetInfo(NULL, 100, (LPBYTE*)buf);
domain_name = pBuf->wki100_langroup;
Run Code Online (Sandbox Code Playgroud)
如果有办法在托管C#本地获取相同的信息,有人可以帮助我吗?
编辑1:伙计们,请阅读问题.我不是在寻找用户域名.
tva*_*son 37
要获取运行progam的系统的当前域,可以使用 System.DirectoryServices.ActiveDirectory.Domain.
Domain domain = Domain.GetComputerDomain();
Console.WriteLine( domain.Name );
Run Code Online (Sandbox Code Playgroud)
jee*_*ran 11
我在一个用户可以在任何地方的项目上工作; 域计算机上的非域用户,非域计算机上的用户,未直接连接到第三方网络上的域等,因此取决于AD已经是非启动者.
System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().在所有这些条件下,DomainName更可靠.
http://blogs.msdn.com/b/trobbins/archive/2006/01/04/509347.aspx
Imports System.DirectoryServices
Imports System.Net.NetworkInformation
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
MsgBox("Domain: " & ActiveDirectory.Domain.GetComputerDomain.Name)
Catch ex As Exception
MsgBox(ex.GetType.ToString & ": " & ex.Message)
End Try
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Try
MsgBox("Domain: " & IPGlobalProperties.GetIPGlobalProperties().DomainName)
Catch ex As Exception
MsgBox(ex.GetType.ToString & ": " & ex.Message)
End Try
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
使用GetCurrentDomain与Environment.UserDomainName相同,如果您的程序作为非域用户在域计算机上运行,则它将无法正常工作.我使用了以下代码:
try
{
return System.DirectoryServices.ActiveDirectory.Domain.GetComputerDomain().Name;
}
catch (Exception)
{
return Environment.UserDomainName;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25092 次 |
| 最近记录: |