Comment définir “Exécuter ce programme en tant qu'administrateur” par programmation
Je vais avoir un problème avec good ol' bdeadmin.exe dans Vista. Tout d'abord, commençons par les des réactions prévisibles de la route:
"Vous ne devriez pas besoin de votre demande à être élevée."
Ce ne. C est la vie.
"Vous avez besoin d'incorporer un fichier de manifeste."
Il est déjà compilé, il est de nombreuses années, la société qui l'a créé n'a pas l'intention de le faire à nouveau, et il est installé à partir d'un Module de Fusion (fichier MSM).
"BDE est obsolète, vous devriez être en utilisant dbExpress"
Un et un demi-million de lignes de code. 'Nuff said.
"Déposer un fichier manifeste à côté de l'EXE."
Essayé et qui n'a rien fait. Comme un test, que même fichier de manifeste a été capable de faire plusieurs autres fichiers EXE exigent une élévation, mais pas celui que je voulais. Quelque chose là-dedans, c'est de prévenir l'externe manifeste d'être lu.
"Créer un raccourci et de définir SLDF_RUNAS_USER."
Peut pas le faire, c'est un applet du Panneau de configuration.
La seule chose qui a fonctionné a été mise en "Exécuter ce programme en tant qu'administrateur" sous l'onglet Compatibilité de sa fenêtre de Propriétés. Je ne devrais pas avoir à dire aux utilisateurs de le faire. Mauvais pour les affaires. J'ai besoin d'avoir le programme d'installation de ce faire. Le fichier MSM utilise un chemin d'accès statique.
- La accepté de répondre a des emplacements du registre à lire pour les valeurs que vous voulez.
- Concernant l' ~ pour Win 8: j'ai remarqué sur mon Win 7 que c'est un # (dièse), suivi d'un espace suivi par RUNASADMIN, donc en effet le plus probable, c'est un ~ (tilda) sur Win 8. Et (qui sait qui nouveau symbole) sur windows 10...
- Pas besoin de recompiler (ou rétablir le lien) juste pour incorporer un manifeste. C'est une ressource régulière, vous pouvez ajouter, comme toute autre ressource. À moins que le binaire est signé numériquement et ne peut pas être modifié, ce serait le droit avant la solution. Re-emballage ce dans un nouveau Module de Fusion devrait être faisable aussi.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir par programmation la "Exécuter ce programme en tant qu'administrateur" drapeau (l'option que vous trouverez dans l'onglet Compatibilité de l'EXE propriétés), par la définition d'une simple clé de registre. Vous avez besoin de créer une valeur chaîne (REG_SZ) en vertu de l'une de ces touches (si vous souhaitez que le paramètre par l'utilisateur ou par machine, respectivement):
ou
Le nom de la valeur doit être le chemin complet de l'exécutable (si le chemin contient des espaces, ne pas entourer le chemin avec les guillemets) et les données de la valeur doit contenir la chaîne
RUNASADMIN
.Pour l'échantillon:
Modes De Compatibilité
WIN95 Windows 95
WIN98, Windows 98
WIN4SP5 Windows NT 4.0 SP5
WIN2000 Windows 2000
WINXPSP2 Windows XP SP2
WINXPSP3 Windows XP SP3
VISTARTM Vista
VISTASP1 Vista SP1
VISTASP2 Vista SP2
WIN7RTM Windows 7
WINSRV03SP1 Windows Server 2003 SP1
WINSRV08SP1 Windows Server 2008 SP1
Niveau De Privilège
RUNASADMIN Exécuter le programme en tant qu'administrateur
Références:
http://www.verboon.info/2011/03/running-an-application-as-administrator-or-in-compatibility-mode/
<Tilde><Space>RUNASADMIN
? Savez-vous si cela s'applique à Windows 8.0 ainsi? Depuis cette "fonctionnalité" est sans-papiers, la mise en œuvre peut changer à tout moment et sans préavis. J'espère qu'il va seulement changer avec les nouvelles versions de Windows, mais je ne pouvais image d'elle en train de changer avec une simple mise à jour de Windows (bien que peu probable)./reg:64
paramètre sur les machines 64 bits si vous exécutez la commande de 32 bits app.C'est un long shot, mais si vous avez le mot "installation" ou "installer" dans le nom de l'EXE, Windows invite à une élévation lors de l'exécution. Je ne sais pas si ça va fonctionner avec un applet du panneau de configuration, cependant.
Avez-vous essayé Microsoft Application Compatibility Toolkit? Il analyse votre application et assure la compatibilité des cales qui pourraient être en mesure de vous aider à résoudre votre problème.
Utiliser un programme intégré qui utilise ShellExcute qui utilise "runas" comme son "verbe" pour exécuter le programme que vous voulez.
J'ai trouvé que le
.manifest
fichier méthode ne fonctionne pas si le.exe
est sousC:\Program files\...
et la.exe
a déjà été exécuté sans le.manifest
fichier. Windows se souvient de la.manifest
de la première fois que le.exe
est exécuté. Cela signifie que vous ne pouvez pas envoyer le manifeste lorsque les utilisateurs se plaignent que leurs installations ne sont pas exécutés. Le fichier manifeste doit être placé avant ou au cours de la même installation que les endroits les.exe
.Windows vérifie à nouveau la
.manifest
si le.exe
changements (par exemple, nouvelle version ou un nombre différent d'octets)Pack votre application en WinRar SFX avec mode silencieux + admin le mode de demande.
Beaucoup plus simple que de jouer avec .MSI variables.
Je serais surpris si cela était possible. Ce serait un moyen idéal pour le code malveillant d'abuser du système. Vous allez probablement avoir indiquer à l'utilisateur l'administrateur doit installer ou ils doivent avoir les droits admin (comme tous les autres programmes sur windows).