Bonjour,
Je développe une application qui doit lire et écrire dans le registre.
Cette application tourne sous Vista et je dois me débrouiller pour qu'elle fonctionne même si l'UAC est activé.
Pour cela, j'ai créé un fichier manifest :
Et je dis dans les propriétés de mon projet de bien utiliser ce manifest.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?xml version="1.0" encoding="utf-8"?> <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo> </asmv1:assembly>
Cela fonctionne très bien (une fois que j'ai fini par comprendre qu'en debug, le manifest n'est pas chargé).
Donc, maintenant, au lancement de mon application, Vista me demande si oui ou non je souhaite autoriser l'application. Si je l'autorise, cela fonctionne.
Oui, mais voilà, maintenant, j'aimerai que mon application soit toujours autorisée, et qu'on ne demande pas à l'utilisateur si il autorise ou pas.
J'avais cru comprendre qu'il fallait signature son programme avec une clé en nom fort.
Est-ce bien vrai ?
Je signe donc mon application... mais cela ne marche pas car, l'une des DLL utilisée en référence (ICSharpCode.SharpZipLib.dll pour ne pas la citer) n'est pas signée. Mais puisqu'elle ne m'appartient pas.. comment puis-je la signer ?
Donc pour résumer, 2 questions :
Est-il vrai que "signer" mon programme permettra à l'UAC de toujours autoriser son exécution ?
Comment signer une DLL dont on a pas le code source ?
Partager