有时我需要删除或替换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文件夹中的文件?
答案 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向您展示如何。