【问题标题】:How can you programmatically change the workgroup of a machine?如何以编程方式更改机器的工作组?
【发布时间】:2009-07-29 03:25:03
【问题描述】:

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

这听起来有点奇怪,但我正在考虑为我们的用户构建一个自动恢复安装(在 100 多个不同的站点,有 2 到 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);

【问题讨论】:

  • 感谢您发布您的解决方案,您拯救了我的一天,先生。

标签: c# .net


【解决方案1】:

看起来您必须调用 SetComputerNameEx() API。可以在 MSDNpinvoke.net 上找到实现它的 C# 代码示例。

SetComputerNameEx 函数的文档可以在here 找到。

您还可以使用 Windows 支持工具中的 netdom.exe 实用程序。您将从您的代码中调用该 EXE 并将其传递给适当的参数 - 在这种情况下,您似乎想要使用 /JOINWORKGROUP 参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多