it-swarm.com.de

Programmgesteuert festlegen, dass "Dieses Programm als Administrator ausführen" festgelegt ist

Ich habe ein Problem mit guter ol 'bdeadmin.exe in Vista. Lassen Sie uns zunächst die vorhersehbaren Antworten aus dem Weg räumen:

"Sie sollten nicht verlangen, dass Ihre Anwendung erhöht wird."
Das tut es. So ist das Leben.

Msgstr "Sie müssen eine Manifestdatei einbetten."
Es ist bereits kompiliert, es ist viele Jahre alt, das Unternehmen, das es erstellt hat, hat nicht die Absicht, es erneut zu tun, und es wird von einem Merge Module (MSM-Datei) installiert.

"BDE ist veraltet, Sie sollten dbExpress verwenden"
Anderthalb Millionen Codezeilen. 'Nuff sagte.

"Legen Sie eine Manifestdatei neben der EXE ab."
Hat das versucht, nichts getan. Als Test konnte die gleiche Manifestdatei mehrere andere EXE-Dateien erstellen, die erhöht werden müssen, nur nicht die, die ich wollte. Etwas darin verhindert, dass das äußere Manifest gelesen wird.

"Erstellen Sie eine Verknüpfung, und legen Sie SLDF_RUNAS_USER fest."
Kann das nicht, es ist ein Applet der Systemsteuerung.

Das einzige, was funktioniert hat, war die Einstellung "Dieses Programm als Administrator ausführen" auf der Registerkarte "Kompatibilität" des Eigenschaftenfensters. Ich sollte die Benutzer nicht dazu auffordern müssen. Schlecht fürs Geschäft. Der Installer muss dies tun. Die MSM-Datei verwendet einen statischen Pfad.

27
Patrick

Sie können das Flag "Dieses Programm als Administrator ausführen" (die Option, die Sie auf der Registerkarte Kompatibilität der Eigenschaften einer EXE finden) programmgesteuert festlegen, indem Sie einen einfachen Registrierungsschlüssel festlegen. Sie müssen einen Zeichenfolgenwert (REG_SZ) unter einem dieser Schlüssel erstellen (wenn die Einstellung pro Benutzer bzw. pro Computer sein soll):

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

oder

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

Der Name des Werts muss der vollständige Pfad zu Ihrer ausführbaren Datei sein (wenn der Pfad Leerzeichen enthält, setzen Sie den Pfad nicht in Anführungszeichen) und die Daten des Werts müssen die Zeichenfolge RUNASADMIN enthalten.

Für probe:

reg.exe Add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Program Files\MyApp\Test.exe" /d "PUT__VALUE__HERE"

Kompatibilitätsmodi

WIN95 Windows 95
WIN98 Windows 98
WIN4SP5 Windows NT 4.0 SP5
WIN2000 Windows 2000
WINXPSP2 Windows XP SP2
WINXPSP3 Windows XP SP3
VISTARTM Vista
VISTASP1 Vista SP1
VISTASP2 Vista SP2
WIN7RTM Windows 7
WINSRV03SP1 Windows Server 2003 SP1
WINSRV08SP1 Windows Server 2008 SP1 

Berechtigungsstufe

RUNASADMIN Programm als Administrator ausführen

REG HINZUFÜGEN "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\temp\compatmodel\iconsext.exe"/t REG_SZ/d "WINXPSP3 RUNASADMIN" /f

Referenzen: http://www.verboon.info/2011/03/running-an-application-as-administrator-or-in--compatibility-mode/

36
Allon Guralnek

Dies ist ein langer Weg, aber wenn Sie das Wort "Setup" oder "Installieren" im Namen der EXE-Datei haben, wird Windows beim Ausführen zur Erhöhung aufgefordert. Ich weiß nicht, ob das mit einem Kontrollfeld-Applet funktioniert.

6
Allon Guralnek

Haben Sie das Application Compatibility Toolkit von Microsoft ausprobiert ? Es analysiert Ihre App und stellt Kompatibilitäts-Shims bereit, die möglicherweise zur Lösung Ihres Problems beitragen.

1
Aaron Klotz

Ich habe festgestellt, dass die Dateimethode .manifest nicht funktioniert, wenn sich .exe unter C:\Program files\... befindet und der .exe zuvor ohne die Datei .manifest ausgeführt wurde. Windows speichert das .manifest ab dem ersten Ausführen des .exe. Dies bedeutet, dass Sie das Manifest nicht einfach senden können, wenn sich Benutzer darüber beschweren, dass ihre Installationen nicht ausgeführt werden. Die Manifestdatei muss vor oder während derselben Installation abgelegt werden, in der .exe platziert wird. 

Windows überprüft das .manifest erneut, wenn sich das .exe ändert (z. B. neue Version oder andere Anzahl von Bytes). 

1
user2861544

Verwenden Sie ein Wrap-Programm, das ShellExecute verwendet, das "runas" als "Verb" verwendet, um das gewünschte Programm auszuführen.

1
Barrypp.zzx

Packen Sie Ihre App in WinRar SFX im unbeaufsichtigten Modus und im Admin-Anforderungsmodus.

Viel einfacher als das Durcheinander mit .MSI-Variablen.

0
Benji