0

有时我需要删除或替换 Windows 7 的 system32 文件夹中的 dll 文件。
下面的代码总是有Permission Denied Error

            if (File.Exists(@"C:\Windows\system32\mydll.dll"))
            {
                fileInfo.IsReadOnly = false;
                File.Delete(@"C:\Windows\system32\mydll.dll");
            }

如何绕过此错误并替换 system32 文件夹中的文件?

4

2 回答 2

2
if (File.Exists(@"C:\Windows\System32\mydll.dll"))
{
    new Process() { StartInfo = new ProcessStartInfo("cmd.exe", @"/k takeown /f C:\Windows\System32\mydll.dll && icacls C:\Windows\System32\mydll.dll /grant %username%:F") }.Start();
    File.Delete(@"C:\Windows\System32\mydll.dll");
}

shell32.dll请注意,即使在获得所有权之后,您也无法删除系统 DLL ,但您可以重命名或移动它。

于 2012-09-08T20:58:32.543 回答
2

用户没有足够的权限从 Windows Vista 及更高版本的 c:\windows\system32 中删除文件。即使使用管理员帐户登录。UAC 制止了它。您必须要求提升以让用户知道您将要修补私人部分。这需要在你的程序中嵌入一个清单来触发 UAC 提示。 这个答案告诉你如何。

于 2012-09-09T10:09:00.943 回答