2013-07-31 6 views
-4

Есть ли способ запуска команд командной строки из приложения C#? Мне нужно имя компьютера, но единственный способ получить доступ к нему - это ввести в командной строке cmd.Выполнить команды командной строки в C#

Nslookup myIPAdress

Как если мой IP был 134.123.12.12 я типа;

Nslookup 134.123.12.12

И значение возвращается после Имя: является то, что я после. Как мне получить это в консольном приложении C#?

Я уже пробовал использовать

string name1 = Environment.MachineName; 
Console.WriteLine(name1); 
string name2 = System.Net.Dns.GetHostName(); 
Console.WriteLine(name2); 
string name3 = System.Net.Dns.GetHostEntry("localhost").HostName; 
Console.WriteLine(name3); 
string name4 =DNSLookup("134.123.12.12"); 
string name5 = System.Net.Dns.GetHostEntry(134.123.12.12).HostName; 
Console.WriteLine(name5); 

Но ни один из них не дают правильное название, они просто дать мне имя сервера/хоста компьютера. Есть идеи?

+9

относительно 'быстрых команд запуска команды из в C# application' Google оказался много помощи – Jonesopolis

+0

Это значение должно быть то, что вы получаете, делая' GetHostEntry' с IP вместо «localhost» (как вы делали с 'name3' выше) – Joe

+0

@Joe GetHostEtry возвращает имя хоста, которое не является именем, которое я ищу. – user2428835

ответ

0

Вы пытались использовать:

System.Net.Dns.GetHostByAddress("134.123.12.12").HostName 
+1

Это даст вам ошибку, потому что вам, по крайней мере, нужно будет добавить: «;», возможно, даже 2 круглых скобки. – Dozer789

+1

Этот метод был отмечен как устаревший с по крайней мере .NET 3.5. Кажется, что он работает, но он говорит вам вместо этого использовать «GetHostEntry». –

1

я получил некоторый код, который может работать для вас.

Вот это даст вам ваше имя интернет:

string name = System.Net.Dns.GetHostEntry("192.168.1.254").HostName; 
Console.WriteLine(name); 
Console.ReadLine(); 

А вот даст вам ваш IP-адрес:

System.Net.IPHostEntry host; 
string localIP = "?"; 
host = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()); 
foreach (System.Net.IPAddress ip in host.AddressList) 
{ 
    if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) 
    { 
     localIP = ip.ToString(); 
     Console.WriteLine(localIP); 
    } 
} 
Console.ReadLine(); 
return; 

Это может быть не лучший способ сделать это, но это работает !

Надеюсь, что это поможет!

0

Это будет выполнять любую команду, которую вы ставите после/C.

string CmndTxt; 
CmndTxt = "/C your command; 
System.Diagnostics.Process.Start("CMD.exe", CmndTxt); 

Например:

string Cmndtxt; 
CmndTxt = "/C ping " + IPtextBox.Text; 
System.Diagnostics.Process.Start("CMD.exe", CmndTxt); 
Смежные вопросы