2016-09-21 1 views
1

Ich habe ein C# -Programm, das eine SQLite-Datenbank zum Lesen/Schreiben von Daten verwendet. Dieses Programm benötigt eine UAC-Erhöhung und ich benötige es zu jeder Zeit. Wenn ich dieses Programm manuell ausführe, was ich als 'admin ausführen' ausführen muss, funktioniert meine SQLite-Datenbank normal und kann Daten in der Datenbankdatei lesen/schreiben. Mein Problem ist jedoch, wenn ich versuche, dass dieses Programm beim Start des Computers automatisch ausgeführt wird.SQLite reader.read() gibt immer false zurück, wenn es vom Taskplaner ausgeführt wird

Wie bereits erwähnt, muss dieses Programm jederzeit ausgeführt werden. Also habe ich ein paar Dinge an Ort und Stelle gesetzt, die das Programm im Falle eines Absturzes erneut ausführen (was super funktioniert). Ich benötige dies jedoch auch, um mit dem Neustart des Computers zu beginnen. Normalerweise ist das kein Problem, aber das Programm benötigt UAC und ich werde selten auf Ja im UAC-Dialog klicken, also lese ich herum und es scheint der einzige Weg, dies zu tun, war eine Aufgabe im Taskplaner einzurichten. Also habe ich eine Aufgabe eingerichtet, um dies beim Start auszuführen. Beim Testen führt das Programm zwar aus, funktioniert aber nicht korrekt. Nach weiterem Debugging habe ich festgestellt, dass jedes Mal, wenn mein Code eine SQLiteDataReader.read() - Zeile erreicht, immer False zurückgegeben wird, obwohl ich weiß, dass dort Datensätze vorhanden sind, aber dies geschieht nur, wenn das Programm über den Taskplaner ausgeführt wird. Von SQLite scheinen keine Fehler zu kommen. Ich vermute, dass Dateiberechtigungen das Problem sind, aber ich weiß nicht, wie ich sie beheben soll.

Ein paar Dinge zu beachten, was ich schon versucht habe. 1) Im Taskplaner habe ich dies so eingerichtet, dass ich denselben Benutzeraccount verwende, den ich für die manuelle Ausführung verwendet habe. Dies ist auch ein Domänenadministrator, ein Administrator und ein lokaler Administrator. 2) Die Aufgabe ist auf "mit höchsten Privilegien ausgeführt" 3) Ich habe die Sicherheitsberechtigungen in Vollzugriff für fast jedes Objekt, das ich denken kann (Admins, Domänen-Admins, Benutzer, Jeder, usw.) geändert Sowohl der Stammordner des Programms als auch die SQLite-Datenbankdatei. 4) Ich habe sogar versucht, die gesamte Anwendung außerhalb des Ordners "Programme" zu verschieben, für den Fall, dass dort auch eine Art eingeschränkter Zugriff involviert war.

Ich bin am Ende meines Wissens versucht, dies herauszufinden. Irgendwelche Ideen, was als nächstes zu versuchen? Oder andere Lösungen, damit dies beim Start ohne Benutzerinteraktion korrekt ausgeführt wird?

+1

Hast du den normalen Startordner ausprobiert? – Bytemain

Antwort

1

Ich bin ein bisschen spät zurück zu diesem Thema zu berichten. Dumm von meinem Teil ... Der Aufgabenplaner musste einfach den Ordnerpfad der Anwendungsdatei als Startpfad angeben. Daher wurde die Datenbankdatei nicht gefunden, da mein Pfad relative Pfade zum Referenzieren verwendet. Ich persönlich verstehe nicht, warum das nicht immer der Ordner der App sein sollte, aber du lebst und lernst und prügelst alles dazwischen.

+0

Vielen Dank, Sie haben meinen Tag gerettet! – Bytemain

Verwandte Themen