Das dürfte auch mit der
UAC (der Benutzerkontrolle) zu tun haben. Versuch doch einfach mal, folgendes Manifest (Dateiname.exe.manifest) beizulegen:
Code:
<?
xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-
com:
asm.v1" manifestVersion="1.0">
<assemblyIdentity
version = "2.2.0.0"
processorArchitecture = "x86"
name = "Your application name"
type = "
win32"/>
<description>Your application's description</description>
[b]<trustInfo xmlns="urn:schemas-microsoft-
com:
asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level = "requireAdministrator"
uiAccess = "false"/>
</requestedPrivileges>
</security>
</trustInfo>[/b]
</assembly>
Ja, es ist wie ein normales Windows XP-Manifest. Neu ist nur der fett markierte Teil, der Admin-Rechte anfordert. Dein Programm bekommt dadurch von Vista automatisch ein kleines Schildsymbol, weil Vista ein potentielles Risiko erkennt. Und wenn du startest, kommt ein Dialog, in dem du gefragt wirst, ob du es zulassen willst. Guck doch mal, ob es dann wieder funktioniert.
Bei
uiAccess musst du evtl ein
true benutzen. Mein Tool ist eine Kommandozeilenanwendung und hat keine Oberfläche.
Was mich mehr interessieren würde: Nach welchem Prinzip funktionieren die neuen Links in der Systemsteuerung, mit denen bestimmte Funktionen von einzelnen Modulen quasi separat angeboten werden. Das ist interessant. Aber das
MSDN schweigt sich dazu leider noch aus. Dafür weiß ich, dass die Kategorien wie unter XP funktionieren. Die ControlPanel-Demo aus den
Win32-
API-Tutorials (vom Registrierungstool stammt ja auch das o.g. Manifest) läuft problemlos unter Vista.