Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Machine's domain name in .NET?

Tags:

.net

windows

dns

There gotta be an easy way to do this, I can't believe there's none. I have scanned through net and found, like, 20 different methods to find in which domain current user is, but none to get domain (or workgroup) of current machine.

In unmanaged c++ this is retrieved by:

WKSTA_INFO_100 *buf; NetWkstaGetInfo(NULL, 100, (LPBYTE*)buf); domain_name = pBuf->wki100_langroup; 

can someone help me, if there's a way to get same info in managed C# natively?

EDIT1: Folks, please read the question. I am NOT looking for user domain name.

like image 591
galets Avatar asked Feb 03 '09 21:02

galets


People also ask

What is a valid DNS name?

DNS host names. Allowed characters. DNS names can contain only alphabetical characters (A-Z), numeric characters (0-9), the minus sign (-), and the period (.). Period characters are allowed only when they are used to delimit the components of domain style names.


2 Answers

To get the current domain of the system on which your progam is running you can use System.DirectoryServices.ActiveDirectory.Domain.

Domain domain = Domain.GetComputerDomain(); Console.WriteLine( domain.Name ); 
like image 121
tvanfosson Avatar answered Oct 14 '22 08:10

tvanfosson


I work on a project where users could be anywhere; non-domain users on a domain machine, users on a non-domain machine, not directly connected to the domain on a third party network, etc. so depending on AD is already a non-starter.

System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName is far more reliable under all of these conditions.

http://blogs.msdn.com/b/trobbins/archive/2006/01/04/509347.aspx

https://msdn.microsoft.com/en-us/library/system.net.networkinformation.ipglobalproperties.domainname(v=vs.110).aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-2

Imports System.DirectoryServices Imports System.Net.NetworkInformation  Public Class Form1      Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click         Try             MsgBox("Domain: " & ActiveDirectory.Domain.GetComputerDomain.Name)         Catch ex As Exception             MsgBox(ex.GetType.ToString & ": " & ex.Message)         End Try     End Sub      Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click         Try             MsgBox("Domain: " & IPGlobalProperties.GetIPGlobalProperties().DomainName)         Catch ex As Exception             MsgBox(ex.GetType.ToString & ": " & ex.Message)         End Try     End Sub  End Class 
like image 31
jeepwran Avatar answered Oct 14 '22 08:10

jeepwran