Удаление пользователя Windows с помощью C # (удаленно) - PullRequest
0 голосов
/ 22 марта 2019

Я уже некоторое время ищу решение для:,Вот мой код:

// Connect to pc    
DirectoryEntry locaDirectoryEntry = new DirectoryEntry("WinNT://" + machineId);
// Find user by userName
    DirectoryEntry user = locaDirectoryEntry.Children.Find(userName);
// Remove the user
    locaDirectoryEntry.Children.Remove(user);
// Commit the changes
    locaDirectoryEntry.CommitChanges();

Теперь этот код удаляет пользователя, поэтому я не вижу его в «Локальные пользователи и группы -> Пользователи», но профиль пользователя остается и превращается в «Учетная запись неизвестна»

Теперь я был на многочисленных веб-сайтах, включая этот, но не смог найти что-то, что делает трюк "полностью".Мне нужно, чтобы профиль пользователя был удален.

Любая помощь / мысли приветствуются.

1 Ответ

0 голосов
/ 22 марта 2019

Хорошо, я отвечу на свой вопрос.

Код, указанный выше, удаляет логин с компьютера, но не заботится о профилях пользователей, как указано Damien_The_Unbeliever.

Я копался в своем PowerShell, эквивалентном приложению, которое я делаю, и нашел, как я это сделал там.Я использую WMI для удаления профиля пользователя.

Вот мой рабочий код для любой души, которая могла бы его использовать:

        public string RemoveUser(string machineId, string userName)
    {
        string result = null;

        try
        {
            // Create scope and set to computer root.
            ManagementScope scope = new ManagementScope(@"\\" + machineId + @"\root\cimv2");

            // Connect.
            scope.Connect();

            // Create the query for user profiles and a searcher.
            SelectQuery query = new SelectQuery("Win32_UserProfile");
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

            // Go through each WMI Instance
            foreach (ManagementObject mo in searcher.Get())
            {
                // Normalize username
                string normalUser = mo["LocalPath"].ToString().Split('\\').Last(); 

                // Check whether this is the user to be deleted
                if (normalUser == userName)
                {
                    mo.Delete();
                    result = "Found user: " + userName + ". Deleting...";
                }

            }

            // This code deletes a user login
            //DirectoryEntry locaDirectoryEntry = new DirectoryEntry("WinNT://" + machineId);
            //DirectoryEntry user = locaDirectoryEntry.Children.Find(userName);
            //locaDirectoryEntry.Children.Remove(user);
            //locaDirectoryEntry.CommitChanges();
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }

        return result;
    }

См. Ссылку на свойства в UserProfiles: https://msdn.microsoft.com/en-us/library/ee886409(v=vs.85).aspx

Это метод удаления: https://docs.microsoft.com/en-us/dotnet/api/system.management.managementobject.delete?view=netframework-4.7.2

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