Kann Service kein Filemapping ??
-
Servus.
Ich habe eine Hook-Dll geschrieben.
Dort teile ich die Daten mit Filemapping. So hat jeder Process Zugriff auf die Daten.
Leider kann der Service, der den GlobalHook installiert, nicht auf die Daten zugreifen. Denn CreateFileMapping gibt mir den Fehler Nr. 5 zurück (Access denied).
Wenn ich die Dll aber zu einem normalen Win32-Proc linke, funktioniert alles. Das auslesen der Daten, das ändern der Fenster falls erforderlich usw. .
Kann es sein, das ein Service unter Win2k nicht auf Speicherbereiche des Nutzers zugreifen kann, egal ob geshared oder nicht?Ich hoffe ihr könnt mir helfen.
-
das liegt an den SECURITY_ATTRIBUTES. das filemapping-objekt muss einen 'NULL' security descriptor haben, damit jeder drauf zugreifen kann.
guckst du: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthz/security/creating_a_security_descriptor_for_a_new_object_in_c__.asp
und das (null sd)SECURITY_ATTRIBUTES sa; PSECURITY_DESCRIPTOR pSD; pSD = (PSECURITY_DESCRIPTOR)LocalAlloc(LPTR, SECURITY_DESCRIPTOR_MIN_LENGTH); InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION); SetSecurityDescriptorDacl(pSD, TRUE, (PACL)NULL, FALSE); sa.nLength = sizeof(sa); sa.lpSecurityDescriptor = pSD; sa.bInheritHandle = FALSE; pSA = &sa;
-
Danke schön.
Funktioniert wunderbar.