2013-07-31 159 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'谷歌中'運行命令提示符命令,打開了很多的幫助 – 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);