C#.Net Windows应用程序 - 在My NT中获取记录的用户名

Sar*_*thy 5 .net winforms c#-2.0

我需要获取在我的局域网中登录特定机器的用户名.建议我通过在C#.net windows应用程序中传递机器名来获取用户名的最佳方法.还要考虑许可.

谢谢

小智 16

//How about this:
string strUserName = WindowsIdentity.GetCurrent().Name;
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用"strUserName"变量执行任何操作.请注意,如果存在域名,它还包含域名.


Sar*_*thy 2

大家好,我得到了我的问题的解决方案。我使用 WMI 来获取用户名。

try {
    object[] objArr = new object[2];
    ManagementScope ms = new ManagementScope("Path");
    ms.Connect();
    if (ms.IsConnected)
    {
        ObjectQuery Query = new ObjectQuery("SELECT * FROM Win32_Process WHERE Name='explorer.exe'");
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(ms, Query);
        foreach(ManagementObject objQuery in searcher.Get())
        {
            objQuery.InvokeMethod("GetOwner", objArr); // objArr[0] contains the userId and objArr[1] contains Domainname
            userName = Convert.ToString(objArr[0]);
        }
    }
}
catch (System.Exception ex)
{
    throw ex;
}
Run Code Online (Sandbox Code Playgroud)

谢谢