0

私は .net プラットフォームで作業しており、C++ を使用してアプリケーションを作成しています。次のコードを使用してグローバル共有メモリを作成し、Windows XP で値を保存すると、完全に機能しますが、Windows 7 で使用するとエラーが発生するため、セキュリティ属性も適用しましたが、それでも特定の権限を与えていますエラー。

//Global declaration

TCHAR szName[]=TEXT("Global\\MyObject");

bool CreateDACL(SECURITY_ATTRIBUTES *sa)
{
    wchar_t *sdd = L"D:P(A;OICI;GA;;;SY)(A;OICI;GA;;;BA)(A;OICI;GRGW;;;IU)";
    return ConvertStringSecurityDescriptorToSecurityDescriptor((LPCSTR)sdd, SDDL_REVISION_1, &sa->lpSecurityDescriptor, NULL) == TRUE;
}

void CreateShareMemory()
{

HANDLE hMapFile =NULL;    // Create handle

    // Check if already created
    hMapFile = OpenFileMapping(
                   FILE_MAP_ALL_ACCESS,   // read/write access
                   FALSE,                 // do not inherit the name
                   szName);               // name of mapping object 

    // If not created, then create
    if(hMapFile == NULL)
    {
        SECURITY_ATTRIBUTES sa;
        CreateDACL(&sa);

        hMapFile = CreateFileMapping(
                     INVALID_HANDLE_VALUE,    // use paging file
                     &sa,                    // default security 
                     PAGE_READWRITE|SEC_COMMIT,          // read/write access
                     0,                       // max. object size 
                     256,                // buffer size  
                     szName);                 // name of mapping object

        int i=GetLastError();       // Here it is giving error no 5
    }
}
4

1 に答える 1