windows系统下文件不能删除的原因

作者使用MFC开发了一款路由器配置工具,在尝试从路由器复制配置文件并删除时遇到问题。通过调整用户权限和修改文件属性,最终解决了无法删除只读文件的问题。

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

最近做的一个小项目,用MFC做了一个路由器设定的小工具。遇到了一个小问题,从路由器copy出它的配置文件到ftp服务器,获得路由的SSID等信息后,删除此配置文件,但就是删除不掉,怀疑有两个原因:用户权限和文件属性。开始时没怀疑文件的属性,一直以为是用户权限问题,结果还是删不掉。无意间发现文件是只读属性。下面是更改用户权限和删除文件的代码:

BOOL CMotorolaSetDlg::EnableDebugPrivilege()
{
    HANDLE hToken; 
    TOKEN_PRIVILEGES tkp; // Get a token for this process.


    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
    {
        return( FALSE ); // Get the LUID for the shutdown privilege.
    }
         
    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); 
    tkp.PrivilegeCount = 1; // one privilege to set 
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; // Get the shutdown privilege for this process. 
    AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); 


    if (GetLastError() != ERROR_SUCCESS) 
    {
         return FALSE;
    }


    return TRUE;    
}
调用了windows的两个API就把文件删掉了:

    SetFileAttributes(OLD_STARTUPCONFIG_PATH,FILE_ATTRIBUTE_NORMAL); 
    DeleteFile(OLD_STARTUPCONFIG_PATH);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值