我正在尝试替换C:\Windows\System32
目录中的文件,但它不起作用。
(对于那些意味着我的程序是病毒的人:不,不是!)
有关环境的一些信息:
我已经添加了应用程序清单并更改了requestedExecutionLevel
。
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
我还尝试使用BATCH替换文件,但我得到了同样的错误。
有没有办法替换文件?
例如,明确要求FileIOPermissions.Write
或.AllAccess
。
答案 0 :(得分:1)
如果您的系统是64位,但您的应用程序是32位,这可能会有所帮助。从Dalong Zhang回答微软论坛上的Can't copy files under C:\Windows\System32\inetsrv\config by C#问题:
由于许多应用程序已将System32目录名硬编码到路径中,因此MS将64位系统文件放在那里而不是“System64”目录中。 32位版本现在进入'SysWOW64'目录。但为了防止破坏32位程序,系统默认为尝试访问“System32”目录的32位进程执行重定向。在大多数情况下,只要32位应用程序尝试访问%windir%\ System32,就会将访问权限重定向到%windir%\ SysWOW64。
绕过此重定向的一种简单方法是使用%windir%\ Sysnative而不是%windir%\ System32。 Win64会将该目录“重定向”到实际的System32目录。
您可以使用
Wow64DisableWow64FsRedirection()
API完全禁用此重定向。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/aa384187.aspx