次の関数を使用して、Windows の 1 つのユーザー アカウントにいくつかのログを含むテキスト ファイルを作成しました。
WORD wBOM = 0xFEFF;
HANDLE hFile = ::CreateFileW(filePath, GENERIC_WRITE, 0, NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL, NULL);
::WriteFile(hFile, &wBOM, sizeof(WORD), &NumberOfBytesWritten, NULL);
::CloseHandle(hFile);
現在、このファイルを他のユーザー アカウントからプログラムで読み取ると、ファイルを開いてその内容を読み取ることができません。
以下の関数を使用して、他のユーザー アカウントから読み取ります。
CFile file;
CFileException *exp = NULL;
if(!file.Open( logAppExecPath,CFile::modeReadWrite | CFile::shareDenyNone,exp))
{
if(exp != NULL)
{
TCHAR ErrorMsg[MAX_PATH];
exp->GetErrorMessage(ErrorMsg,MAX_PATH);
AfxMessageBox(L"XML Creation while AppExecLogs : "+ CString(ErrorMsg));
exp->Delete();
}
}
ただし、同じユーザー アカウントから読み取るときは常に、上記の機能は完全に機能し、ファイルを開いて適切に読み取ります。
どちらのユーザー アカウントも管理者アカウントです。
結論として、あるユーザーアカウントでプログラムでファイルを書き込み、他のユーザーアカウントから読み取ると、「ファイルが存在しない」という例外が発生します..しかし、実際にはファイルが存在し、クリックして手動でそのファイルを開くことができます。