2010-07-05 5 views
5

Ich habe eine VB6 App, die ich seit über 12 Jahren verkauft habe. Manchmal habe ich Benutzer, die es schwer haben, die App zum Laufen zu bringen. Die Datenschreibvorgänge werden in/My Documents ausgeführt, sodass nur die Installationsdateien (EXE usw.) in C: \ Programme (oder C: \ Programme (x86)) verschoben werden.UAC-Virtualisierung verhindern?

Die Lösung für ihr Problem ist, die App zu starten, obwohl es scheint, hängen, zeigen Sie dann den Task-Manager, Prozesse anzeigen, klicken Sie mit der rechten Maustaste auf den Prozess meiner App und deaktivieren Sie UAC-Virtualisierung. Dann lasse ich sie die Installation reparieren und alles ist in Ordnung.

Warum wird mein Prozess unter die UAC-Virtualisierung gestellt und wie verhindere ich das? Ich verwende auch InstallShield 2010 Professional, um die Installation zu erstellen. Ich bin mir nicht sicher, ob es sich um das Installationsprogramm oder die App selbst handelt.

Antwort

9

Um Virtualisierung zu verhindern, fügen Sie der Anwendung ein Manifest hinzu. Egal, ob Sie asInvoker oder requireAdministrator sagen, Sie erhalten keine Virtualisierung mehr. Ich schätze, asInvoker wird besser für Sie sein, da die App gut funktioniert, ohne zu erhöhen.

Sie können einfach foo.exe.manifest in den gleichen Ordner wie die Exe, oder einbetten, die einige knifflige Sachen wie machen das Manifest ein Vielfaches von 4 Bytes lang. This question deckt einige blutige Details der Einbettung.

+0

Vielen Dank für die Informationen. Irgendwelche Links zum Erstellen dieses Manifests? – Neal

+1

In seiner einfachsten Form ist es nur eine XML-Datei namens yourexename.exe.manifest, die in den gleichen Ordner wie yourexename.exe gestellt wird. Ein Beispiel für den Inhalt finden Sie unter http://csi-windows.com/toolkit/manifest-template unter anderem. Der "requestedPrivileges" -Teil ist der wichtige Aspekt. –