Отключить учетную запись с помощью WMI - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь отключить локальную учетную запись Windows.С помощью библиотеки Microsoft я смог написать эту

ManagementScope mgmtScope = new ManagementScope("\\\\.\\Root\\CIMv2");
ObjectQuery oQuery = new ObjectQuery("SELECT * FROM Win32_UserAccount");
ManagementObjectSearcher mgmtSearch = new ManagementObjectSearcher(mgmtScope, oQuery);
ManagementObjectCollection objCollection = mgmtSearch.Get();
foreach (ManagementObject mgmtObject in objCollection)
{
    if ((string)mgmtObject["Name"] == "test")
    {
        mgmtObject.SetPropertyValue("Disabled", true);
        Console.WriteLine("{0}", mgmtObject.GetPropertyValue("Disabled"));
    }
}

Функция GetPropertyValue сообщает мне, что значение установлено в «true», но когда программа выходит из цикла foreach,значение снова устанавливается на «ложь».

Кто-нибудь знает, почему это происходит?

РЕДАКТИРОВАТЬ: Я наконец нашел ответ.Мне просто нужно было применить изменения к объекту методом ManagementObject.Put()

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

На этот вопрос уже есть ответ, но я позволю себе показать, насколько легче вы можете сделать это с библиотекой ORMi (которую я создал и поддерживал):

1)Определите свой класс:

[WMIClass("Win32_UserAccount")]
public class UserAccount
{
    public string Name { get; set; }
    public bool Disabled { get; set; }
}

2) WMI запроса:

WMIHelper helper = new WMIHelper("root\\CimV2");

UserAccount account = helper.Query<UserAccount>().Where(p => p.Name == "test").SingleOrDefault();

account.Disabled = false;

helper.UpdateInstance(account);

Надеюсь, это поможет!.

PD: Вы также можете установить через NuGet

0 голосов
/ 12 июня 2018

Применить изменения к объекту методом

ManagementObject.Put()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...