如何以编程方式更改Windows用户名(使用某些API或命令行工具) 或者如何重命名Windows用户?
答案 0 :(得分:4)
您无法在Windows系统上明显更改用户的名称,因为它对于许多内部资源来说都是key
,但您可以更改它的DisplayName
,顺便说一下,不会影响内部文件结构,所以有cosmetic
种变化。这很可能会给你或同一台机器上的其他用户多年使用造成混淆,所以我建议不要这样做。但是,如果您愿意,这里有powershell
脚本示例,应该适合您:
$CurrentUserName = "Your_Domain_Name/Current_User_Name"
Get-QADUser -SearchRoot $CurrentUserName `
| Set-QADUser -DisplayName "New_User_Name" `
| FT FirstName, LastName, DisplayName, company
有关更详细的说明,请看这个好例子:
Change user DisplayName from powershell
请注意,这里他们为PowerShell
使用extraplugin。
修改强>
另一个关于主题的链接,以澄清我的意思:
Change user name on Windows7 Professional
希望这有帮助。
答案 1 :(得分:4)
您可以使用NetUserSetInfo函数更改用户帐户的用户名。
如果您只想更改用户名,请将level参数设置为0并传递USER_INFO_0结构。如果您想一次更改多个内容,可以使用不同的级别。
这是我成功用于更改用户名的一小段代码:
#include <Windows.h>
#include <LM.h>
#include <stdio.h>
#pragma comment(lib, "netapi32.lib")
int main(int argc, char ** argv)
{
USER_INFO_0 ui0;
NET_API_STATUS result;
LPWSTR command = GetCommandLineW();
wchar_t newname[21];
while (*command != L'*') command++;
command++;
ui0.usri0_name = newname;
wcscpy_s(newname, _countof(newname), L"decommiss-");
wcscat_s(newname, _countof(newname), command);
result = NetUserSetInfo(NULL, command, 0, (LPBYTE)&ui0, NULL);
printf("%u\n", result);
return result;
}
答案 2 :(得分:4)
我已经编写了一些使用System.DirectoryServices.DirectoryEntry类重命名Windows用户的小方法。
public bool RenameUser(string oldLoginName, string newLoginName)
{
bool renamed = false;
try
{
using (DirectoryEntry AD = new
DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"))
{
try
{
using (DirectoryEntry NewUser = AD.Children.Find(oldLoginName, "user"))
{
if (NewUser != null)
{
NewUser.Rename(newLoginName);
renamed = true;
}
}
}
catch (Exception ex)
{
//TODO: Log
}
}
}
catch (Exception ex)
{
//TODO: Log
}
return renamed;
}