前言
通过后台,想删除C盘下”C:\Windows\System32\oobe“的文件。
但是,即使用管理员权限打开VS,依旧无法删除。
一、如何解决?
经过进一步调查,这看起来像是一个64位的问题。当我为“AnyCpu”构建项目时,发现文件夹没有问题。问题是由于依赖关系,我的项目必须为x86而非AnyCpu编译。
解决方案:看起来这是一个已知问题,MS已经发布了一个修补程序。问题是由于文件系统重定向。
我现在使用以下命令禁用调用线程上的重定向:
[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
public static void ForceDeleteFile(string filename)
{
IntPtr ptr = new IntPtr();
bool isWow64FsRedirectionDisabled = Wow64DisableWow64FsRedirection(ref ptr);
string destPath = @"C:\Windows\System32\oobe\Info\";
if (File.Exists(destPath + filename))
{
File.Delete(destPath + filename);
}
}