web-dev-qa-db-ja.com

SysWOW64にリダイレクトされるmkdirパスを回避する方法

.batファイルを使用していくつかのディレクトリ(ディレクトリ)を作成しようとしています。 cmd.exeでは、通常どおりdirを作成できますが、.batファイル内でコマンドを実行すると、奇妙な理由で、dirはSysWOW64ディレクトリ内に作成されます。

Win 7 x64 SP1 PRO

正しいパスにdirを作成するようにWindowsに指示するにはどうすればよいですか?

コマンド:

mkdir C:\Windows\System32\oobe\info
mkdir C:\Windows\System32\oobe\info\backgrounds

バット内では、次のようになります:C:\ Windows\SysWOW64\System32\oobe\info


Cmd.exeへのショートカットを使用して管理者として実行すると、dirはSysWOW64内に作成されます。例:

%windir%\system32\cmd.exe /c "D:\Test.bat"
 or
%windir%\System32\runas.exe /user:Administrator %windir%\system32\cmd.exe /c "D:\Test.bat"

ただし、管理者としてcmd.exeを手動で開き、.batファイルを実行すると、機能します。なんてこった?


編集2

理由がわかりました。これは、Windowsエクスプローラー(WE)ではなくXYPlorer内で.batを実行していたためです。内部WE。batは機能します。But a shortcut opened inside a 32 bit Explorer is not able to run a 62 bit cmd.exe ?

3
Pedro77

C:\Windows\system32\にフォルダを書き込むことは良い考えであり(おそらくそうではありませんが、YMMV)、絶対に自信がある場合は、 ファイルシステムリダイレクタ ファイルを自動的にリダイレクトします。32ビットプロセスで書き込む必要があります。パスC:\Windows\sysnative\を使用すると、system32フォルダに書き出されます。 。

注意:自分が何をしているかを完全に理解していない限り、これらのフォルダをいじくりまわすことはおそらく良い考えではありません。ファイルシステムリダイレクタのリンクを数回読んでください。

それは本当に素晴らしいので、 この答え も読んでください。

2
kmort

SysWOW64は、Windowsシステムフォルダ構造およびWindowsレジストリの機能です。しかし、この機能は自動化に大きな問題を引き起こします。 SysWOWエミュレータに関する情報は次のとおりです。 http://msdn.Microsoft.com/en-us/library/aa384249(VS.85).aspx

この問題を回避するには、コマンドプロンプトで64ビットバージョンを起動するか、MSのフォルダーリダイレクトを使用する必要があります。

0
Alex