Ich habe das so gemacht. Habe zugegebenerweise auch nicht viel Ahnung von dem Sicherheitskram, aber ich lege es im Dienst an und kann es in einer Applikation, die von einem nicht-Admin gestartet wurde, dann auslesen.
Edit: Auch auf das 'Global\' vor dem Namen des MMFs achten.
Delphi-Quellcode:
var
hFileMapping: THandle;
Mem: PMapBytes;
Len: Integer;
SA: TSecurityAttributes;
pSD: TSecurityDescriptor;
begin
if not InitializeSecurityDescriptor(@pSD, SECURITY_DESCRIPTOR_REVISION) then
Exit;
if not SetSecurityDescriptorDacl(@pSD, true, nil, false) then
Exit;
SA.nLength := SizeOf(SA);
SA.lpSecurityDescriptor := @pSD;
SA.bInheritHandle := True;
hFileMapping := CreateFileMapping(INVALID_HANDLE_VALUE, @SA,
PAGE_READWRITE, 0, S.Size, 'Global\DasTolleMapping');