アプリケーションの実行時に、psToolユーティリティをSystem32フォルダーにコピーする必要があります。
私は64ビットのWindows7を使用していますが、exeをsystem32ビットフォルダーにコピーしようとするとFile.Copy
、exeは常にSysWow64にコピーされます。
destFileにブレークポイントを設定すると、パスはとして表示されC:\Windows\System32
ますが、ファイルはそこに移動しません(sysWow64に移動します)。を試しましたSpecial Folder
SystemX86
が、ファイルは再びsysWOW64に移動します。
string sourceFile = "C:\bin\Debug\somexe.exe"
string destFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), utilityName);
File.Copy(sourceFile, destFile, true);
私がここで見逃している提案はありますか?
編集
以下の回答で指摘されているように、ファイルシステムのリダイレクトが行われています。64ビットOS上のコンソールアプリケーション用に、VisualStudioのデフォルト設定でアプリを開発しています。アプリケーションが32ビットと64ビットの両方のOSで動作するように、コンパイル中にどの設定/スイッチを保持する必要があるかわかりません。基本的には、 OSのビットに関係なく
、ファイルをコピーするように設定する必要があります。
プログラムの後半で、コマンドラインからpsToolsユーティリティにアクセスする必要がありますが、SysWOW64に配置すると使用できなくなります。SysWOW64の32ビットcmd.exeを使用するために変更を加えると、これも64ビットプラットフォーム固有のものになりますが、これは選択したくありません。System32
アプリを32ビットと64ビットの両方で問題なく実行できるソリューションはありますか?コードを変更する必要がありますか(どのように?)、またはこのコンソールアプリケーションプロジェクトのいくつかのプロパティ(どのプロパティ)を変更する必要がありますか?