如何使用C#获取计算机的工作组名称?

4
我已经阅读了有关使用 Environment 类获取它的内容,但找不到它的信息。谢谢大家。
4个回答

7
一种基于Jono响应的方法,但更为简短:
public static string GetWorkGroup()
{
    ManagementObject computer_system = new ManagementObject(
                string.Format(
                "Win32_ComputerSystem.Name='{0}'",
                Environment.MachineName));

    object result = computer_system["Workgroup"];
    return result.ToString();
}

5

我尝试使用这里提供的WMI选项,但在我的电脑(以及我办公室的其他几台电脑)上速度极慢(有时超过5秒)。最终对我有效的是使用API调用“NetGetJoinInformation”(PInvoke.net)。该API调用对我来说返回非常快,并且正好符合我的需求。


4
你可以使用WMI来实现这个功能;添加对System.Management.dll的引用并在代码中使用System.Management命名空间,然后调用以下代码:
ManagementObjectSearcher mos = new ManagementObjectSearcher(@"root\CIMV2", @"SELECT * FROM Win32_ComputerSystem"); foreach (ManagementObject mo in mos.Get()) { Console.WriteLine(mo["Workgroup"]); }

谢谢编辑,汉斯。一开始它有转义反斜杠,然后我将其编辑为原样字符串,但语法高亮消失了。当我改回来时(我喜欢看到我的代码有颜色),我没有完全弄对。仍然没有高亮显示,是吗? - Jono

0

点击这里查看示例。您将需要使用P/Invoke。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接