Rechte in Windows Service

derAlex

Mitglied
Rechte in Windows Service - Interaktion mit Desktop

Hallo,

Hab ein kleines Problem. In C# wurde ein Service implementiert. Dieser hat den SystemAccount = LocalSystem

Es werden Screenshotaufträge in eine Queue geschmissen, die dann nacheinander abgearbeitet werden.
Dieser Service greift auf eine dll zu, die ihrerseits ein definiertes Fenster öffnet, einen screenshot macht und diesen dann in einem bestimmten Verzeichnis ablegt...es erfolgt also ein Zugriff auf den Desktop!

Der Service selbst arbeitet zuverlässig, in der Abarbeitung der Auftragsdateien. Allerdings kann er den Screenshot nicht anfertigen, weil das Fenster nicht gefunden wird...es wird aber auf der Oberfläche geöffnet und angezeigt! Ich denke, dass dies ein Rechte Problem ist. Dass also der Service nicht direkt auf den Desktop zugreifen darf! Wie kann ich das lösen? Hat jemand eine Idee oder schon Erfahrungen damit

Bin für jede Hilfe dankbar!

Gruß

Alex :suspekt:
 
Zuletzt bearbeitet:
also, was eine möglichkeit wäre:
Diese DLL speichert den Screenshot ja irgendwo zwischen. Es ist möglich, dass sie dafür das WINDOWS\temp - Verzeichnis nutzt. überprüf mal, ob der angemeldete User schreib und lese - Zugriff auf dieses verzeichniss hat.
Das Proplem gibt es nämlich auch bei CrystalReports und es hat lange gedauert, bis wir das rausgefunden hatten
 
Hallo niggo,

Erst mal danke für Deine Antwort. Die dll stammt auch von mir, deshalb weiss ich, dass keine Zwischenspeicherung erfolgt. Ablauf ist folgender:

int Screenshot(Quelldateipfad,Zieldateipfad){
oeffneQuelldatei(Quelldateipfad);
//Quelldateiname ist auch Fenstername
Fensterhandle = holeFensterhandle(Quelldateiname); <------ hier ist der Fehler
macheScreenshot(Fensterhandle);
holeErgebnisAusZwischenablage();
speichereAlsJpg(Zieldateipfad);
}

Der Service selbst ruft nur die oben in Pseudocode beschriebne Funktion. Wenn das Fenster-Handle geholt werden soll, dann findet er keines und gibt NULL zurück. Aber eben nur, wenn die Funktion über den Service gerufen wird! Sonst funktioniert auch die DLL einwandfrei!

Vielleicht hast ja noch ne idee!

Gruß

Alex
 
oh, wusst ich nicht, das die DLL von dir ist, hätt ich mir aber auch denken können, sonst hättest du ja hier nicht nachgefragt

zurück zum thema:
kann dir da leider nicht weiterhelfen, dafür fehlt mir halt einfach noch zuviel Programmiererfahrung.
ich hatte dich bei deinem Problem auch leider falsch verstanden, hatte demnach auch den Fehler an einer ganz falschen Stelle vermutet
 
Hi,

Nochmal danke für die Hilfe, auch wenns ohne Erfolg war!

Hab die Ursache inzwischen selbst gefunden und behoben..und ärger mich darüber wie lapidar der Grund war!

Ein Windows-Service darf zunächst nicht mit dem Desktop interagieren (was er ja muss, wenn er einen Fensterhandle suchen möchte). Deshalb kann man im Windows Fenster "Dienste" die Serviceeigenschaften ändern. Dafür einfach Kontrollkästchen "Interaktion mit dem Desktop zulassen" aktivieren...fertig...und schon fluppt das Ding :suspekt:

Gruß

Alex
 
Zurück