C#を使用してコンピューターのワークグループ名を取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2708610

  •  01-10-2019
  •  | 
  •  

質問

環境クラスで入手することについて読んだことがありますが、見つかりません。

みんなありがとう。

役に立ちましたか?

解決

これをWMIで行うことができます。 system.management.dllへの参照とsystem.management namespaceの使用ステートメントを追加し、次のコードを呼び出します。

ManagementObjectSearcher mos = 
  new ManagementObjectSearcher(@"root\CIMV2", @"SELECT * FROM Win32_ComputerSystem");
foreach (ManagementObject mo in mos.Get()) {
  Console.WriteLine(mo["Workgroup"]);
}

他のヒント

ジョノ応答に基づく方法ですが、短いです:

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();
}

ここで提案されているWMIオプションを使用してこれを試しましたが、マシン(および私のオフィスの他のいくつか)で耐え難いほど遅く(5秒以上)ことが判明しました。最終的に私のために働いていたのは、API呼び出し「NetgetJoIninformation」を使用することでした(pinvoke.net)。 APIコールは私のために非常に迅速に戻り、必要なことを正確に行います。

見て ここ 例として。 P/Invokeを使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top