Environment クラスで取得することについて読んだことがありますが、見つかりません。
みんなありがとう。
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();
}
ここで提案されている WMI オプションを使用してこれを試してみましたが、私のマシン (および私のオフィスの他のいくつか) では、非常に遅い (5 秒以上の場合もあります) ことが判明しました。私にとってうまくいったのは、API呼び出し「NetGetJoinInformation」(PInvoke.net)を使用することでした。API 呼び出しは非常に迅速に返され、必要なことを正確に実行します。
これは WMI で行うことができます。System.Management.dll への参照と System.Management 名前空間の using ステートメントを追加してから、次のコードを呼び出します。
ManagementObjectSearcher mos = new ManagementObjectSearcher(@"root\CIMV2", @"SELECT * FROM Win32_ComputerSystem"); foreach (Mos.Get() の ManagementObject mo) { Console.WriteLine(mo["ワークグループ"]); }
例については、こちらをご覧ください。P/Invoke を使用する必要があります。