以编程方式更改某些windows用户名(重命名windows用户)
本文关键字:windows 用户 重命名 编程 方式更 | 更新日期: 2023-09-27 18:05:26
如何以编程方式更改windows用户名(使用某些API或命令行工具(或者如何重命名windows用户?
我已经编写了一些小方法来使用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;
}
您可以使用NetUserSetInfo函数更改用户帐户的用户名。
如果只想更改用户名,请将级别参数设置为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;
}
在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
要获得更详细的描述,请查看这个好例子:
从powershell 更改用户DisplayName
请注意,在这里,他们对PowerShell
使用了外plugin。
编辑
关于主题的另一个链接,以澄清我的意思:
在Windows7专业版上更改用户名
希望这能有所帮助。