2010-10-04 21 views
1

J'ai une application qui utilise un fichier COM. Parfois, ce fichier n'a pas été enregistré par regsvr32 et je voudrais programmer une fonction qui si le fichier ne peut pas être chargé, il essaie de l'enregistrer et réessayer. Pour ce faire, j'ai besoin de privilèges d'administrateur, je voudrais donc demander s'il existe un moyen d'afficher la question "Exécuter en tant qu'administrateur" de l'UAC à l'utilisateur pour avoir le droit d'enregistrer le fichier et de l'éteindre. (si possible, sinon il serait exécuté "normal" lors de l'exécution de l'application suivante). Maintenant, je prévois de lancer un autre programme avec un ensemble de manifestes pour l'exécuter en tant qu'administrateur, mais j'ai vu certaines installations qui s'exécutent sans demander l'autorisation d'administrateur et quand la barre de progression démarre, elles affichent la question UAC à l'utilisateur. J'aimerais faire quelque chose comme ça. Existe-t-il une fonction ou une bibliothèque API Win32 pour cela?UAC demander l'autorisation par programme

Merci

+0

L'élévation de processus est définie au démarrage du processus, pas pendant son exécution. la situation que vous avez décrite comme un exemple, est probablement le programme d'installation exécutant un fichier batch externe, en mode silencieux, derrière la scène, démarrant ainsi un nouveau processus. – Stavm

Répondre

1

Votre approche est correcte. Il n'est pas possible d'élever un processus. Vous êtes lancé surélevé ou vous ne l'êtes pas, et vous restez ainsi pendant toute la durée du processus. Pour réaliser ce que vous voulez, vous devez lancer un processus différent et le lancer comme élevé. Votre application principale reste non-élevée. L'invite UAC apparaît lorsque le second processus est lancé. Dans l'intérêt d'une bonne expérience utilisateur, vous devriez avoir un bouton ou un élément de menu pour lancer le lancement, et cet élément devrait avoir un bouclier dessus. De cette façon, l'utilisateur n'est pas surpris. Si vous détectez par programme que vous devez lancer, faites au moins une boîte de message en disant "J'ai détecté que vous devez installer XYZ, ça vous va?" et mettez un bouclier sur OK, pas de bouclier sur Annuler, et s'ils cliquent sur OK, lancez l'application manifestée. Cela déclenchera une invite UAC et l'utilisateur l'attendra.