これがコードサンプルです
var startInfo = new ProcessStartInfo
{
Arguments = commandStr,
FileName = @"C:\Windows\SysWOW64\logman.exe",
};
using (var createCounterProc = new Process { StartInfo = startInfo })
{
createCounterProc.Start();
createCounterProc.WaitForExit();
}
コードを実行した後、「32ビットプロセスは64ビットプロセスのモジュールにアクセスできません」というメッセージが表示されます。 MainModuleのメッセージ(NativeErrorCode:299)。私のソリューションはAnyCPUに設定されています。 logman.exeの64ビットバージョンと32ビットバージョン(C:\ Windows\SysWOW64\logman.exeおよびC:\ Windows\System32\logman.exe)の両方を試しましたが、それでも同じエラーが発生します。私のOSはWin8.1Prox64です。何が問題を引き起こす可能性がありますか?
スタックトレース:
at System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId, Boolean firstModuleOnly) at System.Diagnostics.NtProcessManager.GetFirstModuleInfo(Int32 processId) at System.Diagnostics.Process.get_MainModule()
ビルド構成は次のとおりです。 ここにイメージの説明を入力してください
調査の結果、Logman.exeはアンマネージコードであるため、.NETオブジェクトをMainModuleとして返すことができないため、正常な動作であることがわかりました。 Win32Exceptionのエラーメッセージを少し混乱させます。 Process.Start()の実行には影響しません。