4

32 ビットまたは 64 ビットの Windows で実行できる 32 ビット プロセスがあります。したがって、当然、プロセスがファイルにアクセスしようとするとc:\windows\system32\file.ext、にリダイレクトされc:\windows\SysWOW64\file.extます。これまでのところ、リダイレクトを無効にしたくありません。

私の問題は、プロセスが実際にファイルにアクセスしないことです。代わりに、そのパスを取得してテキスト ファイルに書き込みますSysWOW64。そのテキスト ファイルを64 ビット システムとsystem3232ビット システムで読み取る必要があります。. どうやってやるの?

4

3 に答える 3

8

次のコードは、正しいシステム ディレクトリ (system32\syswow64) を返します。

[DllImport("shell32.dll")]
public static extern bool SHGetSpecialFolderPath(
    IntPtr hwndOwner, [Out]StringBuilder lpszPath, int nFolder, bool fCreate
);

public static string GetSystemDirectory()
{
    StringBuilder path = new StringBuilder(260);
    NativeMethods.SHGetSpecialFolderPath(IntPtr.Zero, path, 0x0029, false);
    return path.ToString();
}

x86 では %windir%\System32 を取得します X64 では %windir%\SysWow64 を取得します

これが役立つことを願っています

于 2010-08-22T12:15:47.010 に答える
4

私が正しく理解していれば、SHGetSpecialFolderPathを使用してCSIDL_SYSTEMX86をcsidlパラメーターに渡すことができます。有効なcsidlのドキュメントには、32ビットプロセスで次のように記述されています。

  • 32ビットOSの%windir%\ system32
  • 64ビットOSの%windir%\ syswow64

よろしくお願いします

于 2010-06-23T01:51:46.090 に答える
-1

System32 C:\Windows\System32 Windows 64 ビット ファイル用のシステム フォルダー (システム ディレクトリ) SysWOW64 C:\Windows\SysWOW64 32 ビット ファイル用の Windows システム フォルダー (システム ディレクトリ) Program Files C:\Program Files 64 ビット ファイル用のフォルダーprogram files Program Files (x86) C:\Program Files (x86) 32 ビット プログラム ファイルのフォルダ

于 2013-01-11T15:25:27.157 に答える