如何通过C#语言删除Windows 7 DLL文件(在System32文件夹中)

时间:2012-09-08 20:55:01

标签: c# file .net-4.0 delete-file permission-denied

有时我需要删除或替换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文件夹中的文件?

2 个答案:

答案 0 :(得分: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,但您可以重命名或移动它。

答案 1 :(得分:2)

用户没有足够的权限在Windows Vista及更高版本上从c:\ windows \ system32删除文件。即使使用管理员帐户登录也是如此。 UAC制止它。您必须要求提升,以便让用户知道您即将修改私有部分。这需要在程序中嵌入清单以触发UAC提示。 This answer向您展示如何。