私はASP.NET 4.0とVisual Studio 2010に取り組んでいます。私のWebプロジェクトでは、コマンドプロセスを実行してシステムの物理アドレスを取得し、結果をコピーして文字列変数に割り当て、文字列変数の部分文字列を取得して私のローカルホストでは正しく動作していますが、展開するとSystem.ArgumentOutOfRangeException: startIndex は文字列の長さより大きくすることはできません。例外。私が試したコードは、
string command = "getmac";
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo("cmd", "/c " + command);
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
process.StartInfo = startInfo;
process.Start();
string mac = "";
string output = process.StandardOutput.ReadToEnd();
if (!string.IsNullOrEmpty(output))
{
mac = output.Substring(162, 20).Trim();
}
process.WaitForExit();
if (!string.IsNullOrEmpty(mac))
{
mactxtbox.Text = mac;
}
編集
以下は私の出力変数です
物理アドレストランスポート名
================== ========================== ============================== 00-00-00-00-00-00 \デバイス\Tcpip_{00000000-0000 -0000-0000-000000000000}
私が欲しいのは、00-00-00-00-00-00 の形式の物理アドレスだけです