c++ - win7下CreateFile失敗,GetLastError返回5
問(wèn)題描述
我在DLL中使用了如下代碼創(chuàng)建文件:
HANDLE pHandle = CreateFile('C:test',GENERIC_ALL,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);if (pHandle ==INVALID_HANDLE_VALUE)cout<<'CreateFile Error:'<<GetLastError()<<endl;
然后將dll注入到explorer.exe中執(zhí)行。在xp以及沒(méi)有開(kāi)啟UAC的win7上都是正常的,但開(kāi)啟了UAC的win7上,會(huì)創(chuàng)建失敗,GetLastError返回的是5,權(quán)限不足。為什么會(huì)失敗呢?explorer.exe難道不是管理員權(quán)限運(yùn)行的嗎?哪怕不是,應(yīng)該也有文件讀寫(xiě)的權(quán)限吧?請(qǐng)問(wèn)該如何處理才能成功創(chuàng)建呢?
問(wèn)題解答
回答1:explorer.exe當(dāng)然不是以管理員權(quán)限運(yùn)行的你在文件管理器中,定位到系統(tǒng)盤(pán)根目錄,試試新建一個(gè)文件,同樣失敗
回答2:用vs2010的情況就是:項(xiàng)目-屬性-連接器-清單文件-UAC執(zhí)行級(jí)別,選擇requireAdministrator。
