有什么方法可以以编程方式更改计算机(XP,Vista和Win 7)所属的工作组(最好是.NET语言)?我找到了帮助确定机器属于哪个工作组的代码,但是在某些情况下,我可能需要更改它。
这听起来有些怪异,但是我正在考虑为我们的用户构建一个自动恢复安装(在2到10台计算机的100多个不同站点,每个站点都有自己的“服务器”)。常见的情况是:“嘿,我的服务器坏了。您可以在另一台计算机上运行我们的Point of Sale软件并将其用作我们的临时/新服务器吗?”。我最终不得不手动配置其计算机名称(将其重命名为旧服务器的名称-我已经有此代码),然后仔细检查工作组以确保它对网络上的其他计算机可见。我希望能够自动执行此操作。
(编辑)
发布信息后,我进行了更多搜索,发现我实际上可以直接执行此操作,而无需运行EXE程序(不是那么重要)。
using System;
using System.Management;
//为简洁起见,删除了类内容
ManagementObject manage = new ManagementObject(string.Format("Win32_ComputerSystem.Name='{0}'", Environment.MachineName));
object[] args = { "WorkgroupName", null, null, null };
manage.InvokeMethod("JoinDomainOrWorkgroup", args);
最佳答案
看起来您必须调用SetComputerNameEx()API。可以在MSDN或pinvoke.net上找到实现该目标的C#代码示例。
可在here中找到SetComputerNameEx函数的文档。
您也可以使用Windows支持工具中的netdom.exe实用程序。您可以从代码中调用该EXE并将其传递给适当的参数-在这种情况下,您似乎想使用/ JOINWORKGROUP参数。
关于c# - 您如何以编程方式更改机器的工作组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1194387/