Изменить некоторые имена пользователей Windows программно (переименовать пользователя Windows) - PullRequest
3 голосов
/ 14 августа 2011

Как программно изменить имя пользователя Windows (с помощью некоторого API или инструмента командной строки) Или как переименовать пользователя Windows?

Ответы [ 3 ]

4 голосов
/ 15 августа 2011

Вы можете изменить имя пользователя учетной записи с помощью функции 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;
}    
4 голосов
/ 15 августа 2011

Я написал небольшой метод для переименования пользователя Windows с помощью класса System.DirectoryServices.DirectoryEntry.

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;
}
4 голосов
/ 14 августа 2011

Вы не можете явно изменить имя пользователя в системе 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

Для более подробного описания посмотрите на этот хороший пример:

Смените DisplayName пользователя с powershell

Обратите внимание, что здесь они используют extraplugin для PowerShell.

EDIT

другой ссылки науточните, что я имею в виду:

Изменить имя пользователя в Windows7 Professional

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...