Почему удаленный WMI-запрос для Win32_LogonSession не возвращает LogonType = 2 экземпляра?
Я выполняю следующий запрос WMI к удаленному компьютеру в контексте безопасности пользователя, который не является администратором на удаленном компьютере.
select * from Win32_LogonSession where LogonType = 2
Запрос не возвращает никаких экземпляров Win32_LogonSession. (Обратите внимание: если я выполняю тот же запрос, что и администратор, я получаю обратно зарегистрированного пользователя, что является моей целью.)
Я следовал инструкциям в Technet, чтобы включить удаленный доступ WMI / DCOM для этого пользователя (проверено с помощью следующего запроса, который возвращает экземпляры Win32_LogonSession LogonType = 3).
select * from Win32_LogonSession
Вот полный пример кода C#, который я запускаю:
var scope = new ManagementScope("\\\\SERVER\\root\\cimv2")
{
Options =
{
Impersonation = ImpersonationLevel.Impersonate,
Password = "myPassword",
Username = "DOMAIN\\myUser"
EnablePrivileges = true,
Authentication = AuthenticationLevel.Packet
}
};
scope.Connect();
var query = new ObjectQuery("select * from Win32_LogonSession where LogonType = 2");
using (var searcher = new ManagementObjectSearcher(scope, query))
{
var managementObjects = searcher.Get();
// managementObjects is empty!
}
Почему этот пользователь получает только определенные экземпляры Win32_LogonSession (LogonType = 3 - Network), но не другие (например, LogonType = 2 - Interactive), даже если пользователь имеет достаточный доступ для удаленного запроса WMI?
Некоторая дополнительная информация: Согласно этой статье в Project Code, только учетная запись LocalSystem имеет достаточный доступ для запроса всех сеансов входа в систему:
Перечисление сеансов входа в систему в проекте Code
Это не совсем верно, так как членства в локальной группе администраторов кажется достаточным. Но, может быть, это означает, что существует недокументированное ограничение, запрещающее предоставлять разрешения на объекты WMI без предоставления полных административных прав?