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.
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/
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.
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.
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).
Verwenden Sie ein Wrap-Programm, das ShellExecute verwendet, das "runas" als "Verb" verwendet, um das gewünschte Programm auszuführen.
Packen Sie Ihre App in WinRar SFX im unbeaufsichtigten Modus und im Admin-Anforderungsmodus.
Viel einfacher als das Durcheinander mit .MSI-Variablen.