0

我使用以下功能在 Windows 的一个用户帐户中创建了一个包含一些日志的文本文件:

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();

        }
        }

但是,每当我从同一个用户帐户读取时,上述功能都可以正常工作并正确打开和读取文件。

两个用户帐户都是管理员帐户。

总之,以编程方式在一个用户帐户中写入文件并从其他用户帐户读取会出现“文件不存在”的异常......但事实是文件存在,我可以使用单击手动打开该文件。

4

1 回答 1

2

默认情况下,用户的配置文件只能由该用户访问。此外,Windows 没有标准的方式来访问任何其他用户的配置文件。

您最好的选择是使用公共/共享位置,在C:\ProgramData\(根据需要设置权限)或公共文档文件夹中。在哪里取决于文件是什么。

于 2012-06-28T15:30:58.570 回答