Si je suis connecté au réseau local ici au travail, j'ai besoin d'accéder à mon application à notre serveur via une adresse IP interne, sinon, je devrai utiliser notre adresse IP externe quand dans la nature. P >
Actuellement, j'essaie juste de vous connecter via l'IP locale, puis d'essayer l'extérieur si elle échoue ... mais le délai d'attente prend un peu trop longtemps et je me demandais s'il y a un moyen de savoir quel domaine la machine est connectée avant d'essayer. p>
Edit: Patrick> Essentiellement, l'application s'exécute sur une tablette PC connectée au réseau local plusieurs fois par jour. Il est à peu près égal entre le nombre de fois qu'il se connecte sur le réseau et les temps qu'il relie localement. P>
Toutes les machines ont un compte de domaine lorsqu'ils sont connectés au réseau (et ont des comptes de domaine avec une convention de dénomination similaire «LOCTABLETX» où X est un nombre donné à la machine lorsqu'il est fantomatique. P>
Ce que je recherche est un moyen rapide de voir si la machine est connectée sur notre réseau local ou sur Internet. Utilisation de l'environnement.UserDomainName me prend sur LocTableTex et non le nom de domaine. P>
modifier em> strong> p>
Si cela aide tout le monde, j'essaie juste de résoudre le nom d'une machine que je peux garantir sera sur le réseau (l'un des serveurs). Cela fonctionne suffisamment pour moi. P>
6 Réponses :
Avez-vous essayé:
var x = NetworkInterface.GetAllNetworkInterfaces() .Where(ni => ni.OperationalStatus == OperationalStatus.Up) .SelectMany(ni => ni.GetIPProperties().UnicastAddresses); // do something with the collection here to determine if you're on the right network. // just looping & printing here for example. foreach (var item in x) { Console.WriteLine(item.Address); }
Cela ne me fait que mon nom de machine sur le domaine. Pas le nom de domaine lui-même. Par exemple, si ma Comp est localisgrmmer1 et que le domaine est company.Local, je reçois le premier et je cherche ce dernier.
C'est très étrange. Je reçois notre nom de domaine sous Vista et XP Pro. Vous pourriez peut-être utiliser cela comme une indication que vous n'êtes pas connecté au domaine?
Je reçois le nom de ma machine locale - et je ne suis pas connecté à un domaine. Cela signifie que cela vous donnera un sens, ce qui vous donnera le système authentifié votre identifiant, soit la machine locale si vous utilisez un utilisateur local ou votre domaine si vous vous connectez à un domaine.
System.Environment.UserDomainName
Cela ne fonctionne pas. Le domaine est toujours rempli, même de l'emplacement distant ou sans connexion Internet.
Vous voulez regarder le Sensibilisation de l'emplacement du réseau API. Disponible sur Windows Vista ou ultérieurement, il vous permet de découvrir par programmation quel réseau vous êtes connecté et d'être averti lorsque cela change. P>
Cela peut être familier pour vous sous la forme de "Est-ce un réseau domestique / travail / public?" Boîte de dialogue. P>
Malheureusement, les machines gagnent WinXP Pro sans possibilité de mettre à niveau. Je ferai quelques recherches pour un équivalent pour WinXP. Merci.
Autre moyen, mais je ne sais pas si c'est en fait mieux que les autres solutions est la suivante:
System.Security.Principal.WindowsIdentity.GetCurrent().AuthenticationType
Si vous vous connectez à votre compte de votre machine, vous obtiendrez le nom de la machine. p> environnement.userdomainname code> ... vous donne le nom de la machine si vous n'êtes pas rejoint à un domaine. Cela vous donne le nom de domaine si vous êtes joint à un domaine. Si vous prenez une machine qui est jointe à un domaine éteint le réseau et de sortir «dans le sauvage»,
environnement.userdomainname code> continuera de fournir le nom de domaine même si vous redémarrez et connectez-vous dans (à votre Compte de domaine). Votre machine met en cache les informations d'identification du domaine pendant environ 30 jours. P>
System.Security.Principal.WindowsIdentity.GetCurrent().AuthenticationType This will return "NTLM" when not connected to the network.
Cela ne fonctionne pas. ordinateur sans carte sans fil, pas câble Ethernet non branché de retour kerberos code> connecté ou non
La réponse à l'époque (il y a 10 ans), était raisonnable pour la situation que l'OP décrit. Selon la configuration de domaine, le code ci-dessus aurait peut-être retourné NTLM ou Kerberos, mais je ne peux pas dire. Les deux sont des sous-systèmes Authn et, espérons-le, personne ne nomme leur domaine "NTLM" ou "Kerberose".
Êtes-vous connecté à la machine avec un compte de domaine et n'est pas simplement connecté physiquement à votre réseau de travail?