2017-09-19 11 views
-1

私はdelphi 7で作られた32ビットアプリケーションからこのテストバッチファイルを実行しようとしています。私は単純にShellExecute( 'install.cmd'、SW_HIDE)関数を使用しています。問題は、32ビットホストアプリケーションのために、最初の行が無視されることです。私はなぜ窓がそれを行うのか知っていますが、私の質問はそのデフォルトの動作を無効にする方法です。私は "System32"を "SysNative"に置き換えようとしましたが、xcopyによって通常のフォルダと解釈されました。バッチファイルを使用して32ビットDelphiアプリケーションから64ビットのフォルダ(System32)にアクセスするには?

INSTALL.CMD

xcopy "SomeLibrary_64bit.dll" "%SYSTEMROOT%\System32\" /Y 
    xcopy "SomeLibrary_32bit.dll" "%SYSTEMROOT%\SysWOW64\" /Y 
+2

'を%windir%の場合は\ sysnative'は、WOW64環境で動作するはずです。それ以外の場合は、1) 'CreateProcess()'を使って直接 'cmd.exe'の64ビット版を起動するか、2)[' Wow64DisableWow64FsRedirection() '](https://msdn.microsoft.com/)を使うか、 /ライブラリ/ windows/desktop/aa365743.aspx)と['Wow64RevertWow64FsRedirection()'](https://msdn.microsoft.com/en-us/library/windows/desktop/aa365745.aspx)を参照してください。もちろん、実際の問題は、 'CopyFile()'関数を使うのではなく、あなたのソフトウェアが '.bat'スクリプトを起動するのはなぜですか? –

+0

Seconded。このためにバッチファイルを使用しないでください。それを超えると、システムディレクトリを変更するのは間違いです。それをしないでください。 –

+0

@Remy Lebeau 私はAviSynth + MTのための簡単なインストーラを作成しました。私は32ビットアプリケーションから直接そのインストールスクリプトを実行したいと思います。 %windir%\ sysnativeに関して。 %systemroot%\ Sysnativeとまったく同じです。 Sysnativeはdelphiでしか動作しませんが、xcopyでは動作しません。私はこのスクリプトを64ビットcmd.exeで起動しようとします。 –

答えて

-2

[OK]をクリックします。私の問題の解決策は、特定の64ビットcmd.exeを使用してスクリプトを実行することです。例

RunCMD(WinDir+'\SysNative\cmd.exe /c "'+programdir+'\Tools\AviSynth\Install.cmd"',SW_HIDE); 
関連する問題