WinBuilder を使用して、.NET 3.0/2.0 のサポートを Windows PE 3.0 に組み込みました。システムフォルダにある必要なプログラムをチェックするプログラムを作成しました。diskpart が Windows PE の「X:\Windows\System32\diskpart.exe」にあることはわかっています。しかし、このコードを使用すると:
if (File.Exists(@"X:\Windows\System32\diskpart.exe"))
{
MessageBox.Show("Found it");
}
ファイルが見つかりません。次のように、テキストの文字列をバッチファイルに書き込もうとしました:
System.IO.WriteAllText(@"X:\temp\diskpart.cmd", "diskpart.exe\npause");
Process proc = new Process;
proc.StartInfo.FileName = @"X:\temp\diskpart.cmd";
proc.Start();
バッチ ファイルは問題なく起動しますが、diskpart.exe プログラムが見つからないことが示されます。奇妙なことは、プログラムの外に出て手動で X:\temp\diskpart.cmd と入力すると、バッチ ファイルが正常に実行され、diskpart.exe を実行できることです。また、プロセスのユーザー名を SYSTEM に変更しようとしましたが、それでも機能しませんでした。
WinPE での .NET のネイティブ サポートがサポートされていないことは承知していますが、少なくとも試してみようと思いました。問題が何であるか知っている人はいますか?