Удаленно изменить имя компьютера для компьютера с Windows Server 2008 с помощью C#?
Может ли кто-нибудь указать мне на убедительный ресурс, чтобы узнать, как удаленно изменить имя компьютера на компьютере с Windows Server 2008 с помощью C#
Я посмотрел на множество сайтов за помощью, и теперь во второй день моей задачи и не очень близко (кроме решения WMI-это в значительной степени мой единственный вариант) полностью из моего нормального набора навыков, так что я думаю, что в значительной степени любая информация была бы хороша, но особенно все, что связано с удаленным изменением имени компьютера. (это было бы происходят сразу после того, как я удаленно раскручиваю вирутал из образа...и да, я понимаю, что потребуется перезагрузка)
Спасибо
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