使用C#删除Windows用户(远程)

g6ll5ycj  于 2023-10-22  发布在  Windows
关注(0)|答案(1)|浏览(146)

我已经研究了一段时间的解决方案:
我试过System.DirectoryServices.AccountManagementSystem.DirectoryServices
目前,我已经关闭了System.Directory服务。下面是我的代码:

// 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();

这段代码删除了用户,所以我在**“本地用户和组->用户”中看不到它,但是用户配置文件仍然保留并变成“帐户未知”**。
现在,我已经在许多网站,包括这一点,但还没有能够找到一些做的伎俩“完全”。我需要删除用户配置文件。
任何帮助/想法都很感激。

8wigbo56

8wigbo561#

我上面指定的代码从计算机中删除了一个登录,但没有像Damien_The_Unbeliever所述的那样处理用户配置文件。
我一直在挖掘我的PowerShell相当于我正在制作的应用程序,并发现我是如何做到这一点的。我使用删除用户配置文件。
以下是我的工作代码,任何可以使用它的灵魂:

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的属性,请参阅linkHere是Delete方法。

相关问题