我試圖防止在我的過程中從閱讀我打開的文件中的第三方DLL,我發現它是...好吧,不可能。爲什麼Windows的CreateFile(<no share access>)對我說謊?
無論我做什麼,無論我指定什麼共享標誌,他們的電話總是似乎成功!
下面是從過程監控截圖 - 第一CreateFile
電話是我的,其餘的都是他們的:
這怎麼可能?爲什麼「分享模式:無」對我說謊,我該如何防止?
下面此代碼是能重現問題的一個示例:
#include <stdio.h>
#include <Windows.h>
int main()
{
LPCTSTR file = TEXT("C:\\Test1234.xml");
HANDLE hFile1 =
CreateFile(file, FILE_READ_ATTRIBUTES, 0, NULL, OPEN_ALWAYS, 0, NULL);
HANDLE hFile2 =
CreateFile(file, FILE_READ_DATA, 0, NULL, OPEN_ALWAYS, 0, NULL);
DWORD n;
BYTE buf[1];
printf("%d\n", ReadFile(hFile2, buf, sizeof(buf), &n, NULL));
CloseHandle(hFile1);
CloseHandle(hFile2);
DeleteFile(file);
}
還值得一提的是,我不知道他們是如何在開始時將文件的I/O優先級設置爲「非常低」的。不是每個文件都有「正常」的優先級,直到它被更改? – Mehrdad
請顯示打開文件的代碼。 –
@RemyLebeau:查看更新。 – Mehrdad