Comment définir “Exécuter en tant qu'administrateur” drapeau sur le raccourci créé par le programme d'installation MSI
J'ai une Configuration et de Déploiement du projet dans Visual Studio 2010.
Je voudrais que le programme d'installation pour créer deux raccourcis vers le fichier exécutable d'un autre projet dans ma solution. Normale de raccourci qui fonctionne simplement l'application à l'aide d'informations d'identification en cours et un autre qui a la Exécuter en tant qu'administrateur indicateur est défini, de sorte que l'utilisateur est invité pour les informations d'identification avec les droits d'administration en cliquant sur le raccourci.
L'exécution de l'application avec les droits d'administration permet à certaines fonctionnalités qui ne sont pas disponibles.
Cette option ne semble pas être possible au premier coup d'œil. Cela peut être fait directement dans Visual Studio? Si non, existe-il d'autres options?
Edit: Si non, est-il possible de modifier le raccourci par programmation à l'aide d'une classe d'installation personnalisée?
OriginalL'auteur bernhof | 2011-07-11
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas pris en charge par le programme d'installation de Windows. L'élévation est généralement géré par l'application grâce à ses manifeste.
Une solution est de créer un wrapper (VBScript ou EXE) qui utilise ShellExecute avec runas verbe pour lancer votre application en tant qu'Administrateur. Votre raccourci peut alors pointer vers ce wrapper de la place réelle de l'application.
Depuis qu'il est tout à fait valable pour les administrateurs et les utilisateurs normaux pour exécuter l'application, je ne pense pas que le manifeste peut pas m'aider ici. À moins que quelque chose m'échappe?
Runas a été spécialement créé pour une demande d'informations d'identification. Le manifeste n'est pas beaucoup d'aide dans votre scénario, c'est pourquoi j'ai suggéré ShellExecute. J'ai mentionné le manifeste parce que c'est la méthode habituelle.
Je vois, merci pour vos commentaires. J'ai édité ma question incluent la possibilité de créer une classe d'installation personnalisée. Je vais accepter votre réponse si rien d'autre ne vient 🙂
OriginalL'auteur user527987
Je sais que c'est tout à fait une vieille question, mais j'avais besoin de trouver une réponse et j'ai pensé que je pourrais aider d'autres chercheurs. J'ai écrit une petite fonction pour effectuer cette tâche en VBScript (collé ci-dessous). Il s'adapte facilement à VB.net /VB6.
Codes de retour de la fonction:
0 - le succès, a changé le raccourci.
99 - raccourci drapeau déjà défini pour s'exécuter en tant qu'administrateur.
114017 - fichier non trouvé
114038 - format de fichier de Données non valide (en particulier le fichier est trop petit)
Tous les autres non-zéro = des erreurs inattendues.
Comme mentionné par Chada dans un post plus tard, ce script ne fonctionnera pas sur msi Annoncé raccourcis. Si vous utilisez cette méthode pour manipuler les bits dans le raccourci, il doit y avoir une norme, non annoncé raccourci.
Références:
MS LNK Raccourci format: http://msdn.microsoft.com/en-us/library/dd871305
Un peu d'inspiration: Lire et écrire un fichier binaire en VBscript
Veuillez noter que la fonction ne vérifie pas la validité de l'LNK raccourci. En fait, vous pouvez le nourrir n'IMPORTE quel fichier et il va modifier Hex octet 15h dans le fichier de bit de 32 à.
Si des copies de l'original raccourci de %TEMP% avant de la modifier.
Daz.
OriginalL'auteur Daz
C'est en grande partie dû au fait que Windows Installer utilise Annoncé raccourcis " pour les packages Windows Installer.
Il n'y a pas de façon inhérente à désactiver cela dans Visual Studio, mais il est possible de modifier la MSI qui est produit pour s'assurer qu'il n'utilise pas annoncé de raccourcis (ou n'utilise qu'un seul). Il y a 2 façons de le faire:
il peut être préférable d'utiliser la première approche, de créer 2 raccourcis et de ne modifier qu'un seul dans ORCA de sorte que vous pouvez faire un clic droit et exécuter en tant qu'administrateur.
Espère que cette aide
OriginalL'auteur Chada
Désolé pour la confusion - je comprends maintenant ce que vous êtes après.
Il existe bien des façons de définir le raccourci drapeau, mais aucun de ceux que je connais directement dans Visual Studio. J'ai trouvé un certain nombre de fonctions écrites en C++ que l'ensemble de la SLDF_RUNAS_USER drapeau sur un raccourci.
Quelques liens vers ces fonctions comprennent:
Un autre débat intéressant sur le même sujet a été réalisée à l'INS forums, le fil peut être de l'aide. Il y a une fonction figurant qui peut être établie comme la mention d'un emplacement de registre qui stocke raccourci paramètres (cela semble être le moyen le plus facile pour y aller, si cela fonctionne) - je ne suis pas en mesure de tester la méthode d'enregistrement pour le moment, mais peut faire un peu plus tard pour voir si elle fonctionne.
Ce fil peut être trouvé ici: http://forums.winamp.com/showthread.php?t=278764
Si vous êtes très désireux de le faire par programmation, alors peut-être que vous pourriez adapter l'une des fonctions ci-dessus pour être exécuté comme un post-installation de la tâche? Ce serait le drapeau du raccourci après votre installation, mais une fois de plus doit être fait sur la Non-Annoncé des raccourcis pour la MSI devrait être fixée comme je l'ai mentionné plus tôt.
Je vais continuer à chercher et tester le paramètre de registre méthode pour voir si elle fonctionne et de faire rapport.
Chada
OriginalL'auteur Chada
J'ai besoin de faire ma demande à être invité pour un Administrateur de Droits lors de l'exécution à partir du Menu Démarrer ou les Fichiers de Programme.
J'ai réalisé ce comportement après la mise en \bin\Debug\my_app.exe " Exécuter ce programme en tant qu'administrateur case pour vrai. ( situé dans les Propriétés de\section Compatibilité ).
Lors de l'installation du projet, ce fichier a été copié les Fichiers du Programme (et donc le raccourci dans le Menu Démarrer) avec besoin de comportement.
Grâce,
Pavlo
OriginalL'auteur Paul Solomenchuk