получить текущее имя пользователя с помощью WMI - PullRequest
1 голос
/ 21 июля 2010

Я использую Win32_NetworkLoginProfile или Win32_Account, чтобы получить список пользователей для системы.Вызов этих объектов возвращает много пользователей, некоторые локальные и некоторые принадлежащие домену (если система является частью домена).

Есть ли способ получить текущее имя пользователя с помощью WMI?Если да, то как?

Более того, используя Win32_Account, я могу проверить, является ли имя пользователя, которое я перечисляю, локальным или частью домена.Есть ли способ добиться того же для текущего пользователя?

Код написан на C для Windows XP или новее.

Спасибо.

1 Ответ

0 голосов
/ 22 июля 2010

Есть ли способ получить текущее имя пользователя с помощью WMI?

Используйте свойство Win32_ComputerSystem.UserName. Возвращает имя пользователя вместе с именем домена, то есть Domain\User. Если вам нужно только имя пользователя, просто извлеките его из этой строки на основе \.

Более того, используя Win32_Account, я могу проверить, является ли имя пользователя, которое я перечисляю, локальным или частью домена. Есть ли способ добиться того же для текущего пользователя?

Ну, вы можете сделать что-то вроде этого:

  • Разделите значение Win32_ComputerSystem.UserName на символ \, чтобы получить доменное имя и имя пользователя отдельно.

  • Получите объект Win32_Account, соответствующий указанному домену и имени пользователя. Это ключевые свойства класса Win32_Account, поэтому вместо выполнения общего запроса SELECT используйте IWbemServices::GetObject, чтобы получить конкретный экземпляр по его пути:

    Win32_Account.Domain="<domain>",Name="<username>"
    
  • Проверьте свойство LocalAccount полученного объекта Win32_Account.

...