代码之家  ›  专栏  ›  技术社区  ›  Paul Mrozowski

如何以编程方式更改计算机的工作组?

  •  4
  • Paul Mrozowski  · 技术社区  · 15 年前

    是否有任何方法可以以编程方式更改A计算机(xp、vista和win 7)所属的工作组(理想情况下是来自.NET语言)?我找到了一些代码来帮助确定一台机器属于哪个工作组,但在某些情况下,我可能需要更改这个代码。

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

    (编辑)

    通过发布信息,我做了更多的搜索,发现我实际上可以直接完成这项工作,而不需要运行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);
    
    1 回复  |  直到 15 年前
        1
  •  2
  •   Scott Ivey    15 年前

    看起来您必须调用setComputerNameEx()API。完成它的C代码示例可以在 MSDN pinvoke.net .

    可以找到setcomputernameex函数的文档 here .

    您也可以使用 netdom.exe 来自Windows支持工具的实用程序。您可以从代码中调用该exe并将适当的参数传递给它-在本例中,您可能希望使用/joinworkgroup参数。