C#を使用してコンピューターのワークグループ名を取得するにはどうすればよいですか?
質問
環境クラスで入手することについて読んだことがありますが、見つかりません。
みんなありがとう。
解決
これを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を使用する必要があります。
所属していません StackOverflow