0

ディレクトリ内のファイルを置き換えようとしていますが、C:\Windows\System32うまくいきません。

(私のプログラムがウイルスだと言っている人へ: いいえ、そうではありません!)

環境に関する情報:

  • ウィンドウズ 7 SP1
  • ビジュアル スタジオ 2012
  • C# WPF プログラム

既にアプリケーション マニフェストを追加し、requestedExecutionLevel.

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

また、BATCH を使用してファイルを置き換えようとしましたが、同じエラーが発生します。

ファイルを置き換える方法はありますか?

たとえば、 or を明示的に求めFileIOPermissions.Writeます.AllAccess

4

1 に答える 1

1

システムが 64 ビットで、アプリケーションが 32 ビットの場合、これが役立つ場合があります。Microsoft フォーラムのCan't copy files under C:\Windows\System32\inetsrv\config by C#に対するDalong Zhang の回答から:

非常に多くのアプリケーションが System32 ディレクトリ名をパスにハードコーディングしているため、MS は 64 ビット システム ファイルを「System64」ディレクトリではなくそこに配置しました。32 ビット バージョンは、「SysWOW64」ディレクトリに移動します。ただし、32 ビット プログラムの破損を防ぐために、システムはデフォルトで、「System32」ディレクトリにアクセスしようとする 32 ビット プロセスに対してリダイレクトを実行します。ほとんどの場合、32 ビット アプリケーションが %windir%\System32 にアクセスしようとすると、アクセスは %windir%\SysWOW64 にリダイレクトされます。

このリダイレクトを回避する簡単な方法は、%windir%\System32 の代わりに %windir%\Sysnative を使用することです。Win64 は、そのディレクトリを実際の System32 ディレクトリに「リダイレクト」します。

Wow64DisableWow64FsRedirection()API を使用して、このリダイレクトを完全に無効にすることができます。詳細については、 http://msdn.microsoft.com/en-us/library/aa384187.aspxを参照してください。

于 2013-11-13T09:22:47.120 に答える