是否可以使用 System.DirectoryServices.AccountManagement 来查找当前登录到特定 PC 的用户是谁?
使用 PrincipalSearcher 可以很容易地找到域中的所有计算机,甚至是它们最后一次登录的时间。但是,我找不到一种简单的方法来查找登录到什么 pcs 的用户的用户名。
关于如何做到这一点的任何想法?
是否可以使用 System.DirectoryServices.AccountManagement 来查找当前登录到特定 PC 的用户是谁?
使用 PrincipalSearcher 可以很容易地找到域中的所有计算机,甚至是它们最后一次登录的时间。但是,我找不到一种简单的方法来查找登录到什么 pcs 的用户的用户名。
关于如何做到这一点的任何想法?
要查找当前登录的用户,您需要知道哪些进程正在从用户帐户运行。因此,对于每台 PC,您需要获取进程列表并找到进程在哪个帐户下执行。为此,您可以使用 WMI。
const string ns = @"root\cimv2";
var host = "your host";
var scope = new ManagementScope(string.Format(@"\\{0}\{1}", host, ns));
scope.Connect();
//List of logged in users
using (var searcher = new ManagementObjectSearcher(scope,
new ObjectQuery("select * from Win32_LoggedOnUser")))
{
foreach (var logonUser in searcher.Get())
{
//see MSDN for available properties of Win32_LoggedOnUser,
//take into consideration "Dependent", "Antecedent" properties
}
}
//list of processes
using (var searcher = new ManagementObjectSearcher(scope,
new ObjectQuery( "select * from Win32_SessionProcess")))
{
foreach (var sessProc in searcher.Get())
{
//see "Antecedent" property
}
}