VB6-Anwendung unter Vista mit Manifest-Datei?

12/12/2008 - 11:05 von Frank Lehmann | Report spam
Hallo NG,

ich bin mir völlig unklar darüber,
ob man unter Windows Vista irgendetwas erreicht,
wenn man in dasselbe Verzeichnis einer abc.exe
ein abc.exe.manifest setzt, mit der Annahme, dass
Vista beim Start der exe das Manifest auswertet.

Mein Projektleiter ist der Meinung, dass ich besagte
Legacy-Anwendung unter Vista in dieser Form
aufwerten soll, um zu erreichen, dass beim Schreiben
in eine Datei, für die der Standardnutzer kein Schreibrecht
hat, nicht die Virtualisierung aktiv wird, sondern ein
Zugriffsfehler gemeldet wird. Aus praktischer Erfahrung
spricht er allerdings nicht, sondern hat das mir überlassen.
Dazu habe ich folgende abc.exe.manifest im Einsatz:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="x86"
name="abc"
type="win32"/>
<description>abc - Anwendung</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

Ich kann in die Manifest-Datei schreiben was ich will, Vista meldet mir
weder, ob die Datei syntaktisch richtig ist, noch reagiert es anders,
wenn ich z.B. level="requireAdministrator" setze.

Jedesmal startet die Anwendung beim Standardnutzer ohne Fragen
oder Warnungen, und beim Schreiben in besagtes schreibgeschütztes
Verzeichnis wird stets virtualisiert.

Kann mir jemand sagen, ob man überhaupt VB6-unmanaged Code
in dieser Weise mit einer Manifest-Datei verbinden kann?

Ich habe bis jetzt nur Beispiele gefunden, wie man ein Manifest
mit VB.NET-Code embedded, aber darum geht es ja nicht.

Dank an alle, die helfen wollen.
Gruß
Frank Lehmann
 

Lesen sie die antworten

#1 Thorsten Doerfler
12/12/2008 - 12:18 | Warnen spam
Frank Lehmann schrieb:
Mein Projektleiter ist der Meinung, dass ich besagte
Legacy-Anwendung unter Vista in dieser Form
aufwerten soll, um zu erreichen, dass beim Schreiben
in eine Datei, für die der Standardnutzer kein Schreibrecht
hat, nicht die Virtualisierung aktiv wird, sondern ein
Zugriffsfehler gemeldet wird.



Es wàre sinnvoller, die Anwendung so zu gestalten, dass sie erst gar
nicht versucht in Verzeichnissen zu schreiben, wo sie es nicht soll.

Aus praktischer Erfahrung
spricht er allerdings nicht, sondern hat das mir überlassen.
Dazu habe ich folgende abc.exe.manifest im Einsatz:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="x86"
name="abc"
type="win32"/>
<description>abc - Anwendung</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">


Hier muss es v3 sein:
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">

<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

Kann mir jemand sagen, ob man überhaupt VB6-unmanaged Code
in dieser Weise mit einer Manifest-Datei verbinden kann?



Ja, kann man für jede legacy Anwendung. Vista cached aber mitunter die
Informationen zum Manifest, daher kann es sein, dass die Informationen
nicht sofort übernommen werden.

Ich habe bis jetzt nur Beispiele gefunden, wie man ein Manifest
mit VB.NET-Code embedded, aber darum geht es ja nicht.



Du kannst das Manifest auch bei Deiner VB6 Anwendung einbetten. Entweder
über eine benutzerdefinierte Ressource (Type 24) oder über das Tool
'mt.exe' aus dem Windows SDK.

mt.exe –manifest abc.exe.manifest -outputresource:abc.exe;1

Eingebettet sollte es auf jeden Fall machen, was Du erwartest.

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen