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.
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.
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 );
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With