_access("c:\\hiberfil.sys",0);失敗的解決方案


_access("c:\\hiberfil.sys",0)返回-1,因為別的進程正在訪問這個文件。我現在要作的事情是判斷c盤上是否有這個文件,該如何辦?

8 个解决方案

#1


提升Debug權限,代碼如下

BOOL EnablePrivilege(LPCSTR lpName, BOOL fEnable)
{
        HANDLE hObject;
        LUID Luid;
        TOKEN_PRIVILEGES NewStatus;

        if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hObject))
                return FALSE;

        if (LookupPrivilegeValue(NULL, lpName, &Luid))
        {
                NewStatus.Privileges[0].Luid = Luid;
                NewStatus.PrivilegeCount = 1;
                NewStatus.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;

                AdjustTokenPrivileges(hObject, FALSE, &NewStatus, 0, 0, 0);
                
                CloseHandle(hObject);
                return TRUE;
        }
        
        return FALSE;
}

調用方式 EnablePrivilege(SE_DEBUG_NAME,TRUE);

然后

if(GetFileAttributes("c:\\hiberfil.sys") == -1)
{
    MessageBox(NULL,_T("文件不存在!"),_T("系統錯誤"),MB_ICONERROR);
}

#2


直接FindFile不行嗎

#3



CFileStatus fs;   
if (!CFile::GetStatus("c:\\pagefile.sys", fs)) 

cout<<"文件不存在。"<<endl;
}
else
{
cout<<"文件存在"<<endl;
}

#4


#5


用open之類的函數,看返回值是否是打開失敗,如果失敗則說明文件不存在

#6


用CFILE貨cstdiofile類

#7


CFile::GetStatus()

#8


學習中

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com