以编程方式更改某些windows用户名(重命名windows用户)

本文关键字:windows 用户 重命名 编程 方式更 | 更新日期: 2023-09-27 18:05:26

如何以编程方式更改windows用户名(使用某些API或命令行工具(或者如何重命名windows用户?

以编程方式更改某些windows用户名(重命名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专业版上更改用户名

希望这能有所帮助。