Jo, ich bastel gerade an einem kleinen Tool zur Produktivitätssteiergung, und ich hätte da gerne etwas Feedback.
Man nehme folgendes als gegeben hin:
Plattform: Vista x64 (Ultimate)
Installierte Datenbanken:
MySQL,
SQL Server 2005 Express, Oracle 10g XE, Firebird 2.0.1.
Alle Datenbanken laufen als Dienst. Aber - das ist ja allgemein bekannt - man braucht nicht immer alle Datenbanken gleichzeitig. Auf meiner alten XP-Kiste hatte ich Batch-Files, die die Services starten und beendet haben. So konnte ich mit einem Doppelklick die nötige Datenbank hochfahren. (Ja, ich gestehe zu meiner Schande, dort war mein Entwickler-Account lokaler Admin).
Unter Vista schlägt da aber nun die
UAC in diese Kerbe. Das heisst, bei meinen Batch-Files müsste ich diese als Admin ausführen und dann jedesmal die
UAC bestätigen. Ergo: Ich will das ein wenig vereinfachen.
Meine aktuelle Idee ist folgende:
Ich schreibe einen Service, der diese Dienste startet und beendet. Die nötigen Rechte hat ein System-Dienst dazu ja.
Dazu schreibe ich ein
Gui, welches im Userkontext läuft. Dieses
Gui kommuniziert mit dem Service und gibt ihm Kommandos, welcher Dienst gestartet / gestoppt / pausiert / fortgesetzt werden soll.
Als Kommunikationsmittel würde ich zur Zeit Named Pipes bevorzugen (da gibts schon nettes Zeug in der WCF, da muss man nicht mehr viel selber machen).
Was ich jedoch nicht möchte ist, dass dieses Tool dazu verwendet werden kann, andere als vorher festgelegte Dienste zu steuern. Ich dachte da an ein Configfile im Dienst-Installationsverzeichnis, welches die zu steuernden Dienste auflistet - und ggf. auch auf bestimmte User einschränkt. Nur ein Benutzer, der tatsächlich Admin-Rechte auf dem jeweiligen Rechner hat, hat auch die Berechtigung ins Programme-Verzeichnis zu schreiben. Der Service liefert also auf Anfrage der
GUI die Liste der erlaubten Services zurück, und diese können vom
GUI aus dann gestartet / gestoppt werden.
Was haltet ihr von der Idee?
Wo seht ihr da Schwachstellen / Angriffspunkte?