我已经研究了一段时间了:
我尝试了System.DirectoryServices.AccountManagement和System.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();
现在此代码删除了用户,因此我无法在“本地用户和组->用户”中看到它,但是用户个人资料仍然保留并变成“未知帐户”
现在,我已经访问了许多网站,但都找不到“完全”完成该操作的东西。我需要删除用户个人资料。
任何帮助/想法都会受到赞赏。
答案 0 :(得分:0)
好的,我会回答我自己的问题。
我上面指定的代码从计算机上删除了登录名,但是没有像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