Удаленно изменить имя компьютера для компьютера с Windows Server 2008 с помощью C#?



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



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



Спасибо

681   1  

1 ответ:

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

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

Измененный код из сообщения в блоге (вам нужно будет добавить ссылку на System.Управление вашим проектом):

    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);

    }

Comments

    Ничего не найдено.