簡體   English   中英

C#替換System32未經授權的訪問中的文件

[英]C# Replace File in System32 Unauthorized Access

我正在嘗試替換C:\\Windows\\System32目錄中的文件,但是它將不起作用。

(對於那些表示我的程序是病毒的人:不,不是!)

有關環境的一些信息:

  • Windows 7 SP1
  • Visual Studio 2012
  • C#WPF程序

我已經添加了應用程序清單,並更改了requestedExecutionLevel

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

我也曾嘗試使用BATCH替換文件,但出現相同的錯誤。

有什么辦法可以替換文件嗎?

例如,明確要求FileIOPermissions.Write.AllAccess

如果您的系統是64位,但您的應用程序是32位,則可能會有幫助。 從張大龍的解答到Microsoft論壇上的C#無法復制C:\\ Windows \\ System32 \\ inetsrv \\ config下的文件

由於許多應用程序已將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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM