c# – 如何以编程方式更改机器的工作组?

有没有办法以编程方式更改机器(XP,Vista和Win 7)所属的工作组(理想情况下来自.NET语言)?我找到了帮助确定机器属于哪个工作组的代码,但在某些情况下我可能需要更改它.

这听起来有点奇怪,但我正在考虑为我们的用户构建一个自动恢复安装(在100到10台机器的不同站点,每台都有自己的“服务器”).一个常见的情况是,“嘿,我的服务器已经死了.你能让我们的销售点软件在另一台机器上运行并将其作为我们的临时/新服务器吗?”.我最终不得不手动配置他们的机器名称(将其重命名为旧服务器的名称 – 我已经为此编写代码),然后仔细检查工作组以确保它对网络上的其他计算机可见.我希望能够尽可能地自动化这个.

(编辑)

随着信息发布,我做了一些搜索,发现我可以直接执行此操作,而无需运行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参数.

点赞