Rechteproblematik unter Vista/7
-
hat jemand eine Lösung für das Rechte-Problem unter Vista/7? Mein Beispiel währe nur mal die simple API-Funktion SetSystemTime() zum Ändern der Systemzeit.
Das Ausführen mit Administratorechten (Benutzer ist Gruppe der Administratoren) oder ein zur Laufzeit beschafftes "TOKEN_PRIVILEGES" bringen hier keinen Erfolg.
Nur das Einbinden eines Vista/7-Manifestes mit dem Zusatz "requireAdministrator" bringt Erfolg. Leider wird jedesmal vor den Ausführen der Benutzer gefragt.
Ich programmiere gerade einen SNTP-Clienten wo halt der Benutzer jedesmal zum Ausführen gefragt wird. Das ist lästig.
Hat jemand Erfahungen damit gesammelt?
MfG
-
man müsste wohl einen kernel treiber programmieren, der dieses närrische verhalten aushebelt.
-
Du kannst das Ding als Service laufen lassen. Ein Service kann man als SYSTEM, bzw. AFAIK auch als Administrator mit vollen Rechten laufen lassen, ohne dass der Benutzer deswegen bei jedem Start gefragt würde ob es eh OK geht.
Alternativ kann man den Job Scheduler verwenden um Prozesse mit vollen Rechten zu starten. Den "Trick" verwende ich z.B. um CoreTemp automatisch bei jedem Login zu starten.
Anderen Weg kenne ich nicht. Ausser natürlich den ganzen UAC Dings auszuschalten, was ich aber als Anwender z.B. nicht machen wollen würde.
Und BTW: wieso programmierst du einen eigenen SNTP Client? Windows hat schon einen, und sogar einen ziemlich guten. Der macht auch netterweise so Dinge wie die Zeit bei kleinen Anpassungen nicht sprunghaft zu ändern, sondern einfach für ein paar Sekunden die Uhr "schneller" bzw. "langsamer" zu drehen, bis die Zeit wieder stimmt. Was eine tolle Sache ist, wenn man möchte dass z.B. diverse Timestamps in Logfiles/Datenbanken/... monoton steigen, und nicht ab und zu mal um ein paar Millisekunden zurückspringen.
-
Der SNTP-Client war nur ne Übung um das NTP-Datenpacket zu verstehen und zu testen. Will dann einen SNTP-Server als Dienst programmieren der im Firmennetzwerk die Zeit bereitstellt um dann alle Rechner mit Zeit zu versorgen. Somit übernimmt dann der Firmen-Server das Ganze, um so wenig wie möglich Fremdeinfluss zu haben. Ok, also wenn es als Dienst läuft, müsste es ja ohne diese Rechtesache funktionieren.
Aushebeln des UAC in dem Sinne soll es nicht sein. Leider weiß ich nicht inwiefern die Windows-Synchronisation die Packete behandelt bzw welche NTP-Version verwendet. Damit das dann kompatibel zu meinem Server-Dienst ist, muss evtl auf den Clienten ebenfalls ein SNTP-Client als Dienst laufen.MfG
-
speedgonz0 schrieb:
man müsste wohl einen kernel treiber programmieren, der dieses närrische verhalten aushebelt.
Der Fragesteller ist hier in einem Forum zur Programmierung von Anwendungen mit WinApi. Die Frage geht jedoch in Eingriffe ins Betriebssystem. Das ist eine andere Liga, für die WinApi keine oder nur wenig Unterstützung bietet oder bieten kann.