Page 1 sur 1

[R] Fonctionnement de RunAsInvoker

Posté : mer. 23 déc. 2015 09:24
par stevanovich
Bonjour,

J'ai une application externe qui nécessite des droits administrateurs pour fonctionner, hors, visiblement, ce serait un bug ou une erreur de prog, bref, un problème récurrent et connu.

Je souhaite lancer cette appli via autoit sans faire appel à #requireadmin .

Avec un fichier noelevate.bat voici la syntaxe :

Code : Tout sélectionner

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start " " %1"
 
lorsque je dépose le raccourcis de l'application à lancer dans ce fichier .bat, cette dernière s'execute sans réclamer l'élévation des droits .

Je m'inspire des exemples sur le net pour créer un exe avec autoit
dont voici les posts : https://www.autoitscript.com/forum/topi ... ec-syntax/

Code : Tout sélectionner

$cmd = @Comspec & ' /min /C set __COMPAT_LAYER=RunAsInvoker & start "" "C:\Schneider Electric\Rapsodie V1.67\std\exe\Rapsody1_67FRA.exe"'
RunWait($cmd)
 
L'application ne s'execute pas correctement , elle réclame des fichiers dll non trouvés ...
Ou est l'erreur ?

J'ai l'impression qu'il faudrait pouvoir mettre l'option RunAsInvoker dans le process autoit ... et non dans le RunWait()

Merci à vous.

Re: [..] Fonctionnement de RunAsInvoker

Posté : mer. 23 déc. 2015 15:59
par orax
Tu peux faire aussi comme ça (mais c'est pour l'ensemble du script que cette variable d'environnement sera changée) :

Code : Tout sélectionner

EnvSet("__COMPAT_LAYER", "RUNASINVOKER")
Run("C:\Schneider Electric\Rapsodie V1.67\std\exe\Rapsody1_67FRA.exe")
Mais si ça ne marche pas c'est que le logiciel doit se lancer avec des droits administrateur.

Une façon de vérifier que le code fonctionne est de faire la même chose avec regedit.

Code : Tout sélectionner

EnvSet("__COMPAT_LAYER", "RUNASINVOKER")
Run("regedit")
Regedit doit se lancer sans demander d'élévation des droits mais on ne peut pas modifier les parties nécessitant des droits administrateur.

Re: [..] Fonctionnement de RunAsInvoker

Posté : mer. 23 déc. 2015 16:38
par stevanovich
Merci Orax !!!

Code : Tout sélectionner

EnvSet("__COMPAT_LAYER", "RUNASINVOKER")
ShellExecute("C:\Schneider Electric\Rapsodie V1.67\std\exe\Rapsody1_67FRA.exe")
Fonctionne nickel avec ShellExecute , vérifié sur un poste sans droits admin.

Merci, merci merci merci !!! :D