c# 删除C:\Windows\System32\oobe下的文件

博客讲述在C#开发中,使用管理员权限打开VS仍无法删除C盘下特定文件的问题。经调查是64位问题,因项目需为x86编译,最终发现是文件系统重定向导致,可使用命令禁用调用线程上的重定向来解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何删除C盘C:\Windows\System32\oobe下的文件


前言

通过后台,想删除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);
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值