プログラミングは初めてですが、やりたいことが可能かどうか疑問に思っていました! もしそうなら、どのように?
コンピュータの IP アドレスを取得するコンソール アプリケーションを開発しました。次に、プログラムは cmd プロンプトを開き、nslookup を (前述の IP アドレスを使用して) 実行して、コンピューターに関する情報を取得します。
プログラムが終了すると、2 つのコンソール ウィンドウが開いています。cmd promt コンソールとプログラム コンソール。コマンドプロンプトには、必要な情報が含まれています。cmdコンソールから情報をコピー/取得して文字列/配列に入れ、情報を使用できるようにする方法がわかりません。
Google を検索しましたが、コマンド プロンプト ウィンドウから手動でコピーする方法しか得られません。プログラムから開いたコマンドプロンプトウィンドウから情報を返す方法ではありません!
また、cmd プロンプトを使用する代わりに、逆引き DNS ルックアップを実行したり、environment.machinename を使用したりすることはお勧めしません。私は多くの方法を試しましたが、これが必要な正しい情報にアクセスできる唯一の方法です。
using System;
using System.Net;
using System.Net.Sockets;
namespace ProcessService
{
static class Program
{
static void Main()
{
//The IP or Host Entry to lookup
IPHostEntry host;
//The IP Address String
string localIP = "";
//DNS lookup
host = Dns.GetHostEntry(Dns.GetHostName());
//Computer could have several IP addresses,iterate the collection of them to find the proper one
foreach (IPAddress ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
localIP = ip.ToString();
}
}
//Converts an IP address string to an IPAddress instance.
IPAddress address = IPAddress.Parse(localIP);
string strCmdText;
strCmdText = "/k nslookup " + localIP;
//open cmd prompt and run the command nslookup for a given IP
System.Diagnostics.Process.Start("C:/Windows/System32/cmd.exe", strCmdText);
//output result
Console.WriteLine(strCmdText);
//Wait for user to press a button to close window
Console.WriteLine("Press any key...");
Console.ReadLine();
}
}
}