Hallo zusammen, ich habe einen Service, der mir alle verfügbaren Updates auf den lokalen Rechner kopiert und dann die msi via msiexec ausführt. Jetzt zu meiner Frage: Bei WinXP lief das ganze ja noch ganz gut. Wenn ich das ganze aber unter Vista/7 ausführe, bekomme ich Probleme mit der UAC. Ich habe meinen Service schon als "Lokales System" und explizit als "Admin" laufen lassen. Leider mit enttäuschendem Ergebnis. Weiß jemand Rat?
Das sah fürs erste mal sehr gut aus, danke. Jetzt kommt beim Starten des Services: "Der Dienst "..." auf "Lokaler Computer" konnte nicht gestartet werden. Fehler 740: Der angeforderte Vorgang erfordert erhöhte Rechte." Jetzt habe ich den Dienst schon als Admin gestartet. Mehr geht glaub ich nicht...
Nun, man kann in der Systemsteuerung unter Benutzerkonten die Einstellungen der Benutzerkontensteuerung ändern. Es geht aber auch mittels einer Einstellung in der Registry
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA Wert 1 = UAC ist eingeschaltet Wert 0 = UAC ist ausgeschaltet
In Windows Vista werden Anwendungen standardmäßig als Standardbenutzer ausgeführt, selbst wenn der aktuelle Benutzer mit einem Konto angemeldet ist, das über Administratorberechtigungen verfügt. Wenn in einer Anwendung eine Aktion ausgeführt werden muss, für die Administratorberechtigungen erforderlich sind, wird das Betriebssystem benachrichtigt, das daraufhin den Benutzer auffordert, Administrator-Anmeldeinformationen einzugeben. Dieses Feature wird als Benutzerkontensteuerung (User Account Control, UAC) bezeichnet und verhindert, dass Anwendungen ohne die ausdrückliche Genehmigung durch einen Benutzer Änderungen vornehmen, die Auswirkungen auf das gesamte Betriebssystem haben können.
Das bedeutet, für die Benutzerkontensteuerung ist es unerheblich, dass der Dienst mit Admin-Rechten gestartet wird. Microsoft reagierte mit der UAC auf ihren Ruf eine "Virenschleuder" zu sein. Somit wird es für Schadprogramme erheblich schwieriger Programme nachzuladen. Das bereitet natürlich auch dem Programmierer erhebliche Schwierigkeiten und endet häufig in einer Änderung der Architektur. Einfacher wird das Deployment für den Programmierer, wenn es sich um eine Client-Server-Architektur handelt, bei der wenn möglich nichts installiert werden muss (Copy&Paste-Deployment) und der Server nur einmal eingerichtet werden muss. Da ich deine Architektur nicht kenne, kann ich darauf nicht genauer eingehen.
Danke für deine Antwort. Leider kann ich an der Architektur der Anwendung nichts mehr ändern. Die Anwendung ist nicht meine und Client-/Server- wird die auch nicht mehr. Hab gerade noch gesehen, dass PsExec von Sysinternals noch helfen könnte. Ich forsche diesbezüglich. Mein Verdacht ist aber, dass wenn msiexec aufgerufen wird, bei Windows alle Alarmglocken klingeln!!!