Maison >développement back-end >C++ >Comment puis-je accorder des privilèges d'élévation d'application Windows pour modifier les clés de registre protégées ?

Comment puis-je accorder des privilèges d'élévation d'application Windows pour modifier les clés de registre protégées ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-03 02:30:39670parcourir

How Can I Grant My Windows Application Elevation Privileges to Modify Protected Registry Keys?

Accorder une élévation pour les modifications du registre dans les environnements Windows modernes

Dans le monde de la programmation Windows, modifier les clés de registre sous HKEY_CLASSES_ROOT était autrefois une tâche simple . Cependant, avec l'avènement de Windows 7 et l'accent mis sur le contrôle des comptes d'utilisateurs (UAC), les développeurs peuvent rencontrer l'erreur « L'accès au registre demandé n'est pas autorisé ».

Cette limitation provient du fait que la plupart des applications s'exécutent avec privilèges utilisateur standard dans Windows 7 et versions ultérieures. Pour modifier les clés de registre protégées telles que celles sous HKEY_CLASSES_ROOT, les applications nécessitent des privilèges administratifs.

Augmentation de votre code pour la prise en charge de l'UAC

Pour accorder à votre utilitaire de réglage les privilèges élevés nécessaires, vous devez mettre en œuvre la solution suivante :

1. Utiliser un manifeste d'application :

Créez un fichier manifeste avec l'extension ".manifest" dans le répertoire de votre application.

2. Configurez le manifeste :

Dans le fichier manifeste, définissez la structure XML suivante :

<?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>

3. Liez le manifeste :

Dans votre code C, ajoutez la ligne suivante à la section des directives du préprocesseur :

#pragma comment(linker,"/manifestdependency:\"MyApplication.manifest\"")

En mettant en œuvre ces étapes, vous instruisez le système dont votre application a besoin privilèges d'administrateur pour effectuer des modifications du registre. Lorsque l'application est lancée, Windows invitera automatiquement l'utilisateur à accorder l'élévation, permettant à votre utilitaire de réglage d'accéder aux clés de registre protégées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn