Le nom de domaine de Machine en .NET?

Il doit y avoir un moyen facile de faire cela, je ne peux pas croire qu’il n’y en a pas. J’ai scanné via net et trouvé, comme, 20 méthodes différentes pour trouver dans quel domaine l’utilisateur actuel est, mais aucun pour obtenir domaine (ou groupe de travail) de la machine actuelle.

Dans c ++ non géré, ceci est récupéré par:

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

quelqu’un peut-il m’aider, s’il existe un moyen d’obtenir les mêmes informations en C # géré en mode natif?

EDIT1: Merci, lisez la question. Je ne cherche pas de nom de domaine d’utilisateur.

Pour obtenir le domaine actuel du système sur lequel votre programme s’exécute, vous pouvez utiliser System.DirectoryServices.ActiveDirectory.Domain .

 Domain domain = Domain.GetComputerDomain(); Console.WriteLine( domain.Name ); 

Je travaille sur un projet où les utilisateurs peuvent être n’importe où; les utilisateurs n’appartenant pas à un domaine sur une machine de domaine, les utilisateurs sur une machine autre qu’un domaine, ne sont pas directement connectés au domaine sur un réseau tiers, etc.

System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties (). DomainName est beaucoup plus fiable dans toutes ces 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.ToSsortingng & ": " & 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.ToSsortingng & ": " & ex.Message) End Try End Sub End Class 

L’utilisation de GetCurrentDomain est identique à Environment.UserDomainName , qui ne fonctionne pas correctement si votre programme s’exécute sur un ordinateur de domaine en tant qu’utilisateur non-domaine. J’ai utilisé le code suivant:

 try { return System.DirectoryServices.ActiveDirectory.Domain.GetComputerDomain().Name; } catch (Exception) { return Environment.UserDomainName; } 

System.Environment.UserDomainName

Si vous ne souhaitez pas append une dépendance à System.DirectoryServices, vous pouvez également appeler directement l’API NetGetJoinInformation .