windows系統下文件不能刪除的原因

最近做的一個小項目,用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);


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章