我需要获取在我的LAN中登录特定机器的用户名。建议我通过在C#.net窗口应用程序中传递机器名称来获取用户名的最佳方法。同时考虑许可。C#.Net Windows应用程序 - 在我的NT中获取记录的用户名
感谢
我需要获取在我的LAN中登录特定机器的用户名。建议我通过在C#.net窗口应用程序中传递机器名称来获取用户名的最佳方法。同时考虑许可。C#.Net Windows应用程序 - 在我的NT中获取记录的用户名
感谢
大家好我得到了我的问题解决方案。我使用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;
}
感谢
据我了解,你想远程确定的人的用户名登录到多台PC和Windows窗体应用呈现结果。
Windows没有枚举此信息的内置机制。
无论您最终选择使用哪种机制,您可能都需要在正在扫描的PC上具有管理权限的用户帐户下运行扫描应用程序。
您可能会选择模拟SysInternals命令PsLoggedOn的行为,该命令检查远程计算机上的HKEY_USERS项。要找出谁连接到PC(即访问共享),请使用NetSessionEnum API。
有关PsLoggedOn的更多信息可以在这里找到:link text
//How about this:
string strUserName = WindowsIdentity.GetCurrent().Name;
那么你可以做任何你想要与 “strUserName中” 变量做。请注意,如果有域名存在,它也包含域名。
是的,我想第二个“你想远程确定登录到许多PC的用户的用户名并将结果呈现在Windows窗体应用程序中吗?” – Sarathy 2010-07-17 17:32:41