Page 1 sur 1

[R] Rendre execution invisible

Posté : lun. 17 août 2009 17:58
par jcaspar
B :D onjour à tous !

Je souhaiterais que l'exécution du code ci dessous soit invisible pour l'utilisateur
pouvez vous svp m'indiquer s'il est possible de lancer la console cmd de manière invisible ? :roll:

Merci d'avance pour vos idées et conseils :mrgreen:
JeanMarc
► Afficher le texte

Re: [..] Rendre execution invisible

Posté : lun. 17 août 2009 18:15
par Dididj
Bonjour,

en remplacent la ligne

Code : Tout sélectionner

Run(@ComSpec & " /k  runas /user:administrateur cmd.exe","")
par

Code : Tout sélectionner

Run(@ComSpec & " /k  runas /user:administrateur cmd.exe","",@SW_HIDE)


le cmd est lancer et aucune fenêtre ne s'affiche par contre je crois qu'il faut remplacer la commance "Send" par "ControlSend".

Re: [..] Rendre execution invisible

Posté : mar. 18 août 2009 09:46
par jcaspar
M :D erci de votre réponse !

j'ai bien testé cette possibilité...mais elle provoque une réaction anormale
cmd s'ouvre une multitude de fois ..etc ... le fichier executable se grise et devient
inacessible.....un fichier ea se rajoute ..... :o :o :roll:

Peut être avez vous déjà rencontré ce problème ? :mrgreen:
Jean Marc

Re: [..] Rendre execution invisible

Posté : mar. 18 août 2009 18:32
par Dididj
Je n'ai eu aucune problème ,je vais essayé de trouver une autre fonction.
Un fichier ea c'est quoi ? :?

J'edit si je trouve.

Édit :
► Afficher le texte
Voila chez moi ça fonctionne parfaitement.

Re: [..] Rendre execution invisible

Posté : mer. 19 août 2009 15:36
par jcaspar
Merci de votre réponse ! :D

Le script fonctionne mais il ne fait rien car lorsque l'on desactive la fonction hide on s'appercoit que seul la console
s'ouvre mais rien ne s'écrit ..donc aucune action n'est effectuée :?

Il semberait que la command controlsend ne fonctionne pas avec la console...

cf la documentation :ControlSend is only unreliable for command prompts ... diablerie que cela !

Continuons de chercher nous allons bien finir par trouver une solution ... :wink:

Re: [..] Rendre execution invisible

Posté : mer. 19 août 2009 17:12
par Dididj
Vu que je ne connais pas d'autre commande pour simuler une touche je vais me tourné vers une autre solution.
Si le cmd s'exécute avec la fenêtre mais a l'arrière plan cela peut-il convenir ?

Re: [..] Rendre execution invisible

Posté : mer. 19 août 2009 17:25
par Iste
Simuler les actions humaines et les bot graphiques ne doivent etre utilisé qu'en dernier recourt.

La, de ce que j'ai compris tu ouvre l'invite de commande pour executer acrobat.exe (qui se trouve a un endroit que tu connais)
Ben, pourquoi ne pas simplement utiliser shellexecute() ?
Si c'est pour une histoire de droit d'admin, le sujet a déja été abordé sur le forum

Pis meme, les

Code : Tout sélectionner

WinActivate("C:\WINDOWS\system32\cmd.exe","")
send("exit")
send("{ENTER}")
Bah, autant faire un Winclose()

Re: [..] Rendre execution invisible

Posté : mer. 19 août 2009 17:35
par jcaspar
M :D erci de votre aide !
l'essentiel étant que l'utilisateur ne soit pas dérangé et qu'il ne voit pas ce qui se passe ...

Je suis preneur pour toute nouvelle idée

Re: [..] Rendre execution invisible

Posté : mer. 19 août 2009 18:20
par Iste
Ben dans ce cas, dites nous ce que vous voulez faire exactement, et on pourra vous dire comment le faire.

Car "rendre invisible" un script, c'est pas la solution. Dididj a essayé au mieux, mais ca reste bancale.

On ne "rend" pas un script invisible, mais on le "crée" ainsi

'fin bref, voila

Re: [..] Rendre execution invisible

Posté : mer. 19 août 2009 23:35
par jcaspar
Bonsoir à tous !

Merci encore pour vos astuces et conseils. :wink:

Je souhaiterais executer ce code de manière à ce que la console ne soit pas visible
avec SW_HIDE (le script bug ..curieusement) voilà pourquoi je cherche une autre alternative ... et sans SW_HIDE tout va bien mais l'ouverture de console est visible.
Run(@ComSpec & " /k runas /user:administrateur cmd.exe","SW_HIDE") :?:

Je suis tout à fait d'accord avec ceux qui me diront qu'il faut utiliser la fonction runas
mais à mon grand regret étant dans un domaine ...rien à faire malgré avoir testé toutes les solutions proposées dans le forum...

Dommage que runasset de l'ancienne version d'autoit ne sois plus implanté dans cette nouvelle version !





Code : Tout sélectionner


#NoTrayIcon
#Include <Misc.au3>
global $titre="cmd.exe (en tant qu'utilisateur"
global $machine=@computername
global $titre1="\administrateur)"


Run(@ComSpec & " /k  runas /user:administrateur cmd.exe","SW_HIDE")
   sleep(100)
   send("xxxxx")
   send("{ENTER}")
   sleep(100)
WinActivate($titre &$machine & $titre1 ,"")
sleep(200)
send("cd \")
send("{ENTER}")
sleep(100)
send("cd "&@tempdir)
send("{ENTER}")
sleep(200)
send("acrobat.exe")
send("{ENTER}")
WinActivate($titre &$machine & $titre1 ,"")
send("exit")
send("{ENTER}")
WinActivate("C:\WINDOWS\system32\cmd.exe","")
send("exit")
send("{ENTER}")
 

Re: [..] Rendre execution invisible

Posté : jeu. 20 août 2009 01:15
par orax
jcaspar a écrit :Je suis tout à fait d'accord avec ceux qui me diront qu'il faut utiliser la fonction runas
mais à mon grand regret étant dans un domaine ...rien à faire malgré avoir testé toutes les solutions proposées dans le forum...

Dommage que runasset de l'ancienne version d'autoit ne sois plus implanté dans cette nouvelle version !
C'est étrange que ça ne marche pas puisqu'il y a bien un paramètre pour mettre un domaine.

J'ai vu aussi qu'il a les API CreateProcessAsUser et CreateProcessWithLogonW qui pourraient peut-être correspondre.

Sinon, vous pourriez utiliser 2 scripts (mais regroupés en un seul avec FileInstall).
Dans cet exemple : le script secondScript.exe sera exécuté avec les droits voulus. A moins que vous souhaitez absolument avoir accès à l'invite de commande du DOS...

Code : Tout sélectionner

Global $utilisateur = "xxx"
Global $mdp = "xxx"
Global $programme = @TempDir & "\secondScript.exe"

FileInstall("C:\secondScript.exe",$programme,1)

Run("runas /user:" & $utilisateur & " " & $programme, "c:\", @SW_HIDE)

; attends que RunAs soit entièrement chargé
While ControlGetText("C:\WINDOWS\system32\runas.exe", "", "") = ""
    Sleep(10)
WEnd

ControlSend("C:\WINDOWS\system32\runas.exe", "", "", $mdp & @CRLF, 1)

Re: [..] Rendre execution invisible

Posté : jeu. 20 août 2009 09:16
par jcaspar
:D Super cette suggestion je vais tester !

Comment serait il possible d'utiliser les API CreateProcessAsUser et CreateProcessWithLogonW ? :?: :roll:

Merci encore pour votre aide vous êtes trop fort :mrgreen: !

Jean Marc

Re: [..] Rendre execution invisible

Posté : jeu. 20 août 2009 19:25
par orax
C'est la fonction DllCall() pour pouvoir les utiliser ; mais je ne sais absolument pas si c'est bien celle-ci qu'il faudrait utiliser dans le cas présent et ça serait juste pour éviter de lancer le programme runas.exe.
orax a écrit :Sinon, vous pourriez utiliser 2 scripts (mais regroupés en un seul avec FileInstall).
Eh... en fait, autant n'en lancer qu'un seul. Je ne sais plus pourquoi j'avais écrit ça. :roll: