2010-02-08 9 views
7

Ich habe ein Problem mit Windows UAC, geplante Aufgaben und eine ausführbare Datei namens "dbupdate.exe". Ich habe volle Kontrolle über Quellcode, Manifeste und so weiter, aber nicht über Benutzersysteme (kurz: normaler Software-Ingenieur ;-). Sprache ist Delphi, sollte aber nicht wichtig sein, denke ich.Exe Name wie update.exe durch UAC in geplanten Task blockiert

Ich habe ein Problem mit einer Anwendung im Taskplaner in Windows Vista und Windows 7. Das Programm heißt dbUpdate.exe. Es hat in einem xp/vista-Manifest eingebaut, das konfiguriert, dass das Programm "asInvoker" gestartet werden sollte.

Nun, in Vista und Windows 7 kann ich das Programm ohne Probleme starten, aber ich muss in das System eingeloggt sein. Wenn ich nicht eingeloggt bin, wird das Programm nicht ausgeführt (Ich benutze Windows Task Scheduler, aber ich weiß, dass das Problem auch bei anderen Scheduling-Programmen existiert). Aber: Wenn ich das Programm in "dbBlaBla.exe" umbenenne, wird es ausgeführt. Führt mich zu dem Punkt, dass die UAC Installer Detection denkt, dass mein Programm ein Installer ist (was nicht der Fall ist, aber ich weiß, dass es sich um Dateinamen wie Update, Setup usw. handelt).

Ich suchte im Internet, ich konnte nicht viele hilfreiche Dinge finden. Also frage ich hier

Muss ich ein spezielles Manifest erstellen, um es in einem geplanten Job ausführen zu können? Oder gibt es eine Möglichkeit, UAC für geplante Jobs oder nur für meine ausführbaren Dateien zu deaktivieren? Oder muss ich wirklich ein anderer Name wählen (dann würde es funktionieren, wie bereits erwähnt) und nehmen Sie die Gefahr, dass die Kunden und meine Kollegen sind nicht sehr zufrieden über diese? $

Vielen Dank für jede Hilfe, Grüße

+0

Kunden und Kollegen wären sehr unzufrieden, wenn Sie es updatedb.exe oder upd_task.exe nennen? Klingt eher so, als würdest du es einfach umbenennen, es aufschreiben, um herauszufinden, wann du Zeit hast (eine SO-Frage ist gut für das ..: P), und zu wichtigen Problemen übergehen. (Also bist du schon halb da.) –

+0

Nun, der Punkt mit "zu wichtigen Problemen bewegen" hört sich gut an ;-) aber leider ist es eine Tatsache, dass das Wort "update" in unserer Firma sehr verbreitet ist und für die Dinge Sinn macht Programm tut es. Danke für Ihre Antwort – warheart

Antwort

6

In Windows 7 fordert ein Programm mit dem Namen "update.exe" anscheinend Privilegien. Es ist offensichtlich der Name, und es ist nur einer dieser verrückten Microsoft-Dinge. Wenn Sie es in "anythingUpdate.exe" umbenennen, wird die magische Verletzung ausgelöst. "UpdateAnything.exe" auch!

Also ich meine umbenannt in up7.exe und jetzt ist Microsoft ruhig und unwiderstehlich. Das gleiche scheint in Vista zu passieren.

So "updatedb.exe" wird nicht funktionieren; „Upd_task.exe“ würde ...

+1

so genannte [Installer Detection] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb756960.aspx) überprüft, ob der Dateiname _contains_ keywords wie "install", "setup" , "update" usw. (leider werden nicht einmal alle Schlüsselwörter angegeben). Aber 'requestedExecutionLevel', das von @warheart erwähnt wird, sollte die Installer-Erkennung außer Kraft setzen. – marcin

+0

Meine Update-Programme heißen jetzt * upda1e.exe. Ich denke auch, dass es ziemlich dumm ist, die Funktionen anhand des Namens zu erkennen. Ich frage mich, wer mit dieser Idee gekommen ist ... – nulleight

1

Von http://social.msdn.microsoft.com/Forums/en-US/windowscompatibility/thread/1b316a7f-852e-4a71-89d3-090e45990f98

Die Benutzerkontensteuerung: Anwendungsinstallationen erkennen und erhöhte Rechte-Einstellung muss für Installateur Erkennung aktiviert werden Installationsprogramme zu erkennen. Diese Einstellung ist standardmäßig aktiviert und kann mit dem Sicherheitsrichtlinien-Manager-Snap-In (secpol.msc) oder mit Gruppenrichtlinien (gpedit.msc) konfiguriert werden.

+0

Sie können die Einstellung finden, indem Sie 'secpol.msc' ausführen und dann zu Lokale Richtlinien → Sicherheitsoptionen gehen. –