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:
Source:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| 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 ?
Source:
Delphi-Quelltext
1:
| CreateEvent(pSecurityAttr,... ) |
Die GUI soll unter jedem User mit dem Service kommunizieren. Egal welche Rechte dieser hat.
Gruss,
Andi
Moderiert von
Tino: Werbelink entfernt.