Я читал о получении его с классом Environment, но не могу его найти.Как получить имя рабочей группы компьютера с помощью C#?
Спасибо, ребята.
Я читал о получении его с классом Environment, но не могу его найти.Как получить имя рабочей группы компьютера с помощью C#?
Спасибо, ребята.
Вы можете сделать это с помощью 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"]); }
Посмотрите, пожалуйста, here. Вам придется использовать P/Invoke.
Я думаю, это могло бы быть то, что вы читаете:
System.Environment.GetEnvironmentVariable("USERDOMAIN")
Но это не имеет ничего общего с именем рабочей группы. Имя рабочей группы недоступно в среде (вы можете ввести «set» в командной строке, чтобы убедиться в этом).
Путь, основанный на реакции 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 возвращается очень быстро для меня и делает именно то, что мне нужно.
Благодарим за редактирование, Ханс. Сначала у него была скрытая обратная косая черта, затем я отредактировал ее, чтобы сделать их дословными строками, но подсветка синтаксиса исчезла. Когда я изменил его назад (мне нравится видеть мой код в цвете), я не понял его совершенно правильно. Я все еще не выделяю, понимаете? – Jono