C# 谁当前登录到pc?

C# 谁当前登录到pc?,c#,active-directory,account-management,C#,Active Directory,Account Management,是否可以使用System.DirectoryServices.AccountManagement查找当前登录到特定pc的用户 使用PrincipalSearcher很容易找到域上的所有计算机,甚至在它们上次登录时也是如此。然而,我找不到一个简单的方法来查找登录到什么PC的用户的用户名 关于如何做到这一点有什么想法吗?要查找当前登录的用户,您需要知道哪些进程正在从用户帐户运行。因此,对于每台PC,您需要获得进程列表,并找到进程在哪个帐户下执行。为此,可以使用WMI const string

是否可以使用System.DirectoryServices.AccountManagement查找当前登录到特定pc的用户

使用PrincipalSearcher很容易找到域上的所有计算机,甚至在它们上次登录时也是如此。然而,我找不到一个简单的方法来查找登录到什么PC的用户的用户名


关于如何做到这一点有什么想法吗?

要查找当前登录的用户,您需要知道哪些进程正在从用户帐户运行。因此,对于每台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
       }
  }

这也是一个有益的回答