Hallo,
Ich hab folgendes Problem:
Ich habe ein Service und eine
GUI. Die beiden Applikationen verständigen sich über FileMapping um Daten auszutauschen. Dabei werden die Lese und Schreibe Operationen durch Windows-"Events" ausgelößt.
Nun zum Problem:
Der Service läuft Standardgemäß unter dem User SYSTEM, wobei die
GUI im Kontext des aktuellen Users läuft. Jedesmal wenn einer der Anwendungen versucht mit dem anderen zu kommunizieren und dabei die Events auslößt gibt es eine "
Access denied (Zugriff verweigert)" Fehlerrückgabe.
Sobald der Service im Debug Modus (also in der Konsole) läuft, funktioniert alles perfekt (ist ja auch klar, läuft im selben Sicherheitskontext wie die
GUI).
Folgendermaßen sind die Events augebaut:
Delphi-Quellcode:
In der
GUI:
const
MMF_SERVEREVENT = '
Global\spsevent';
MMF_CLIENTEVENT = '
Global\spcevent';
hCEvent := CreateEvent(
nil, False, False, MMF_SERVEREVENT);
hSEvent := OpenEvent(SYNCHRONIZE, False, MMF_CLIENTEVENT);
Im Service (ist
in C geschrieben):
hSEvent = OpenEvent(SYNCHRONIZE, FALSE, MMF_SERVEREVENT);
hCEVent = CreateEvent(NULL, FALSE, FALSE, MMF_CLIENTEVENT);
Das Problem ist wohl, das der Service, bzw die
GUI, keine Rechte hat, mit dem Gegenüber zu kommunizieren. Hat jemand eine Ahnung wie ich die Rechte für diese setzen kann ?
CreateEvent(pSecurityAttr,... )
Die
GUI soll unter jedem User mit dem Service kommunizieren. Egal welche Rechte dieser hat.
Gruss,
Andi