Удаленно изменить имя компьютера для Windows Server 2008 с помощью C #? - PullRequest
2 голосов
/ 02 июня 2011

Может быть кто-нибудь сможет указать мне на убедительный ресурс, чтобы узнать, как удаленно изменить имя компьютера на компьютере под управлением Windows Server 2008 с помощью C #

Я посмотрел на многих сайтах для помощи, и теперь ввторой день моей задачи, и не совсем ближе (кроме того, что выбор WMI - мой единственный выбор). Полностью вне моего обычного набора навыков, так что я думаю, что любая информация была бы хорошей, но особенно все, что связано с изменением имени компьютера.удаленно.(это произойдет сразу после того, как я удаленно раскрутю вирулентал с изображения ... и да, я понимаю, что потребуется перезагрузка)

спасибо

1 Ответ

5 голосов
/ 08 июня 2011

Вот хорошая ссылка, которая подробно обсуждает ее, а также имеет дело с членством в активном каталоге и именами компьютеров в дополнение к имени локальной машины. http://derricksweng.blogspot.com/2009/04/programmatically-renaming-computer.html

(Кстати, если вам придется иметь дело с именами Active Directory, я бы рассмотрел использование класса ComputerPrincipal из пространства имен System.DirectoryServices.AccountManagement и чего-либо еще из пространства имен System.DirectoryServices, которое использовалось в блоге пост.)

Подправлен код из поста в блоге (вам необходимо добавить ссылку на System.Management для вашего проекта):

    public void RenameRemotePC(String oldName, String newName, String domain, NetworkCredential accountWithPermissions)
    {
        var remoteControlObject = new ManagementPath
                                      {
                                          ClassName = "Win32_ComputerSystem",
                                          Server = oldName,
                                          Path =
                                              oldName + "\\root\\cimv2:Win32_ComputerSystem.Name='" + oldName + "'",
                                          NamespacePath = "\\\\" + oldName + "\\root\\cimv2"
                                      };

        var conn = new ConnectionOptions
                                     {
                                         Authentication = AuthenticationLevel.PacketPrivacy,
                                         Username = oldName + "\\" + accountWithPermissions.UserName,
                                         Password = accountWithPermissions.Password
                                     };

        var remoteScope = new ManagementScope(remoteControlObject, conn);

        var remoteSystem = new ManagementObject(remoteScope, remoteControlObject, null);

        ManagementBaseObject newRemoteSystemName = remoteSystem.GetMethodParameters("Rename");
        var methodOptions = new InvokeMethodOptions();

        newRemoteSystemName.SetPropertyValue("Name", newName);
        newRemoteSystemName.SetPropertyValue("UserName", accountWithPermissions.UserName);
        newRemoteSystemName.SetPropertyValue("Password", accountWithPermissions.Password);

        methodOptions.Timeout = new TimeSpan(0, 10, 0);
        ManagementBaseObject outParams = remoteSystem.InvokeMethod("Rename", newRemoteSystemName, null);

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