Moin,
folgendes Szenario. Ich habe einen
Dienst, nennen wir ihn
Dienst.exe. Zum Installieren oder Deinstallieren benötigt man Administratorrechte (oder nicht?). Das ist bis hierhin unter Windows XP oder 2003 nicht weiter problematisch, unter Vista hingegen startet man bekanntermaßen ein
Programm auch dann ohne Administratorrechte, wenn man als Administrator angemeldet ist. Wenn jetzt also ein Benutzer
Code:
Dienst.exe -install
bzw.
Dienst.exe -uninstall
aufruft, und nur dann, soll das
Programm als Administrator ausgeführt werden. Vielleicht habe ich hier und in Google nur die falschen Suchworte benutzt, aber ich habe bislang nur die folgende Möglichkeit gefunden:
Über ein Vista-Manifest highestAvailablePrivileges anfordern. Das bedeutet, dass das
Programm, von einem Benutzer gestartet, von diesem Administratorrechte anfordert, ist das richtig? Also als Administrator muss man einmal auf Bestätigen klicken, als normaler Benutzer muss man Benutzername/Passwort eingeben? Oder startet das
Programm dann als normaler Benutzer gar nicht oder mit niedrigeren Rechten? Und was passiert nun, wenn der SCM das
Programm als
Dienst starten möchte? Hat es dann eventuell höhere Rechte als notwendig (SYSTEM-Account)? Mir war so, als hätte ich auch von der Möglichkeit gelesen, einem
Dienst so wenig Rechte wie möglich (aber so viel wie nötig) zuzuweisen.
Gibt es alternativ die Möglichkeit, die Rechte erst später anzufordern, nämlich dann, wenn sie benötigt werden, und das am besten so, dass es unter XP auch funktioniert (wenn das dort überhaupt möglich ist)? Das wäre mir nämlich eigentlich lieber. Ich habe von dem Stichwort Impersonation gehört, aber konnte nicht recht eine schöne Erklärung dazu finden, bzw. ob das der richtige Weg ist. Sachdienliche Hinweise werden mit Freude entgegengenommen, auch, ob eventuell eine komplett andere Vorgehensweise günstiger ist.