JeBe à découvert une méthode plutôt innovante pour déterminer si le code est exécuté sur une machine de production ou sur le poste de développement.

La logique est implacable, s’il y a deux adresses IP, et que l'une d'entre elles est 127.0.0.1, alors ça doit être une machine de développement. Comment faire pour obtenir les adresses IP? Rien de plus simple ...

private static string LocalAddress
{
get
{
string local = null;
MatchCollection Mx =
Regex.Matches(RunCommand("cmd", "/c ipconfig"),
"IP Address[^:]+: ([0-9]+[.][0-9]+[.][0-9]+[.][0-9]+)",
RegexOptions.Singleline|RegexOptions.IgnoreCase);
if(Mx!=null)
{
foreach(Match Mc in Mx)
{
if(Mc.Groups.Count==2&&Mc.Groups[1].Value!="127.0.0.1")
local = Mc.Groups[1].Value;
}
}
return local;
}
}
private static string RunCommand (string Command, string Parameters) 
{
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = Command;
psi.Arguments = Parameters;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
Process p = Process.Start (psi);
StreamReader sr = p.StandardOutput;
string s = sr.ReadToEnd(); sr.Close();
return s.Replace("\r\n", "\n");
}
WTF compte double, car sur le fond et sur la forme, même si l'auteur avait utilisé System.net et parcouru la liste renvoyée par Dns.GetHostName(Gns.getHostName()).AdressList, il aurait quand même eu un WTF ...