Vbscript probleme de "runas" via excel VBA lors d'une 1ere exécution
16 réponses
quicksilvain
Salut a tous
Avec excel vba je dois faire appel a un fichier vbscript avec une demande d’élévation pour des mis à jour, cela fonctionne très bien si on a déjà exécuter un vbscript avec une demande d’élévation sur le fichier vbscript lui même.
Savez vous pourquoi lorsque j'exécute un vbscript via excel vba lors d'une 1ere exécution (sans avoir jamais exécuter de vbscript dans le PC) ça fonctionne pas?
Par contre, si j'exécute le vbscript lui même et que je retourne dans excel vba pour exécuter ce vbscript (et même d'autres) ça fonctionne?
Je trouve ça bizarre..
Merci
--
This post on narkive:
http://narkive.com/TLYkoKXK
J'ai oublier voici le message d'erreur: "le service ne peut pas accepter des commandes en ce moment" -- This post on narkive: http://narkive.com/TLYkoKXK.2
J'ai oublier voici le message d'erreur: "le service ne peut pas accepter des commandes en ce moment"
--
This post on narkive:
http://narkive.com/TLYkoKXK.2
J'ai oublier voici le message d'erreur: "le service ne peut pas accepter des commandes en ce moment" -- This post on narkive: http://narkive.com/TLYkoKXK.2
J'ai oublier voici le message d'erreur: "le service ne peut pas accepter des commandes en ce moment"
MichD
Bonjour,
Une façon de faire...
Si le contrôle du compte usager dans le panneau de configuration est activé, tu auras un message à savoir si oui ou non tu veux exécuter le programme. C'est la sécurité de Windows...
'---------------------------------------------- Sub test() Dim ObjShell As Object
Set ObjShell = CreateObject("Shell.Application") ObjShell.ShellExecute "cscript", "c:UsersTonProfilDocumentsTonFichier.vbs", "", "runas", 0 End Sub '----------------------------------------------
Bonjour,
Une façon de faire...
Si le contrôle du compte usager dans le panneau de configuration est activé,
tu auras un message à savoir si oui ou non tu veux exécuter le programme.
C'est la sécurité de Windows...
'----------------------------------------------
Sub test()
Dim ObjShell As Object
Set ObjShell = CreateObject("Shell.Application")
ObjShell.ShellExecute "cscript",
"c:UsersTonProfilDocumentsTonFichier.vbs", "", "runas", 0
End Sub
'----------------------------------------------
Si le contrôle du compte usager dans le panneau de configuration est activé, tu auras un message à savoir si oui ou non tu veux exécuter le programme. C'est la sécurité de Windows...
'---------------------------------------------- Sub test() Dim ObjShell As Object
Set ObjShell = CreateObject("Shell.Application") ObjShell.ShellExecute "cscript", "c:UsersTonProfilDocumentsTonFichier.vbs", "", "runas", 0 End Sub '----------------------------------------------
MichD
Correction, il y a une petite erreur dans l'ordre des arguments de la fonction appelée.
Comme ceci, tu n'as aucun message du contrôle du compte usager.
N.B. Attention aux coupures intempestives du service de messagerie
La macro complète est par conséquent : '---------------------------------------------- Sub test() Dim ObjShell As Object
Set ObjShell = CreateObject("Shell.Application") ObjShell.ShellExecute "cscript", _ "c:UsersTonProfilDocumentsNomFichier.vbs", "runas", "", 0 End Sub '----------------------------------------------
Correction, il y a une petite erreur dans l'ordre des arguments
de la fonction appelée.
Comme ceci, tu n'as aucun message du contrôle du compte usager.
N.B. Attention aux coupures intempestives du service de messagerie
La macro complète est par conséquent :
'----------------------------------------------
Sub test()
Dim ObjShell As Object
Set ObjShell = CreateObject("Shell.Application")
ObjShell.ShellExecute "cscript", _
"c:UsersTonProfilDocumentsNomFichier.vbs", "runas", "", 0
End Sub
'----------------------------------------------
N.B. Attention aux coupures intempestives du service de messagerie
La macro complète est par conséquent : '---------------------------------------------- Sub test() Dim ObjShell As Object
Set ObjShell = CreateObject("Shell.Application") ObjShell.ShellExecute "cscript", _ "c:UsersTonProfilDocumentsNomFichier.vbs", "runas", "", 0 End Sub '----------------------------------------------
quicksilvain
isabelle wrote:
bonjour, est ce que tu utilises cette commande ? Shell Environ("COMSPEC") & " /c start """" ""C:test.vbs""", 1 isabelle
Merci non j'utilise ce code vba pour faire appel au vbscript:
Shell "wscript C:fichier.vbs", vbNormalFocus
Et voici le code qui se trouve dans le fichier vbscript:
If WScript.Arguments.length =0 Then Set objShell = CreateObject("Shell.Application") objShell.ShellExecute "WScript.exe", Chr(34) & _ WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1 Else
'Mon code ici
End If -- This post on narkive: http://narkive.com/TLYkoKXK.6
isabelle wrote:
bonjour,
est ce que tu utilises cette commande ?
Shell Environ("COMSPEC") & " /c start """" ""C:test.vbs""", 1
isabelle
Merci non j'utilise ce code vba pour faire appel au vbscript:
Shell "wscript C:fichier.vbs", vbNormalFocus
Et voici le code qui se trouve dans le fichier vbscript:
If WScript.Arguments.length =0 Then
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "WScript.exe", Chr(34) & _
WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
'Mon code ici
End If
--
This post on narkive:
http://narkive.com/TLYkoKXK.6
bonjour, est ce que tu utilises cette commande ? Shell Environ("COMSPEC") & " /c start """" ""C:test.vbs""", 1 isabelle
Merci non j'utilise ce code vba pour faire appel au vbscript:
Shell "wscript C:fichier.vbs", vbNormalFocus
Et voici le code qui se trouve dans le fichier vbscript:
If WScript.Arguments.length =0 Then Set objShell = CreateObject("Shell.Application") objShell.ShellExecute "WScript.exe", Chr(34) & _ WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1 Else
'Mon code ici
End If -- This post on narkive: http://narkive.com/TLYkoKXK.6
quicksilvain
MichD wrote:
Correction, il y a une petite erreur dans l'ordre des arguments de la fonction appelée. Comme ceci, tu n'as aucun message du contrôle du compte usager. ObjShell.ShellExecute "cscript", _ "c:UsersTonProfilDocumentsNomFichier.vbs", "runas", "", 0 N.B. Attention aux coupures intempestives du service de messagerie La macro complète est par conséquent : '---------------------------------------------- Sub test() Dim ObjShell As Object Set ObjShell = CreateObject("Shell.Application") ObjShell.ShellExecute "cscript", _ "c:UsersTonProfilDocumentsNomFichier.vbs", "runas", "", 0 End Sub '----------------------------------------------
Merci
Effectivement avec ce code ça fonctionne.. car j'utilisais ce code: Shell "wscript C:fichier.vbs", vbNormalFocus
Quel est la différence entre votre code et celui-ci ?
Set objShell = CreateObject("Shell.Application") objShell.ShellExecute "wscript.exe", C:fichier.vbs -1", "", "runas", 1 -- This post on narkive: http://narkive.com/TLYkoKXK.7
MichD wrote:
Correction, il y a une petite erreur dans l'ordre des arguments
de la fonction appelée.
Comme ceci, tu n'as aucun message du contrôle du compte usager.
ObjShell.ShellExecute "cscript", _
"c:UsersTonProfilDocumentsNomFichier.vbs", "runas", "", 0
N.B. Attention aux coupures intempestives du service de messagerie
La macro complète est par conséquent :
'----------------------------------------------
Sub test()
Dim ObjShell As Object
Set ObjShell = CreateObject("Shell.Application")
ObjShell.ShellExecute "cscript", _
"c:UsersTonProfilDocumentsNomFichier.vbs", "runas", "", 0
End Sub
'----------------------------------------------
Merci
Effectivement avec ce code ça fonctionne.. car j'utilisais ce code:
Shell "wscript C:fichier.vbs", vbNormalFocus
Quel est la différence entre votre code et celui-ci ?
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "wscript.exe", C:fichier.vbs -1", "", "runas", 1
--
This post on narkive:
http://narkive.com/TLYkoKXK.7
Correction, il y a une petite erreur dans l'ordre des arguments de la fonction appelée. Comme ceci, tu n'as aucun message du contrôle du compte usager. ObjShell.ShellExecute "cscript", _ "c:UsersTonProfilDocumentsNomFichier.vbs", "runas", "", 0 N.B. Attention aux coupures intempestives du service de messagerie La macro complète est par conséquent : '---------------------------------------------- Sub test() Dim ObjShell As Object Set ObjShell = CreateObject("Shell.Application") ObjShell.ShellExecute "cscript", _ "c:UsersTonProfilDocumentsNomFichier.vbs", "runas", "", 0 End Sub '----------------------------------------------
Merci
Effectivement avec ce code ça fonctionne.. car j'utilisais ce code: Shell "wscript C:fichier.vbs", vbNormalFocus
Quel est la différence entre votre code et celui-ci ?
Set objShell = CreateObject("Shell.Application") objShell.ShellExecute "wscript.exe", C:fichier.vbs -1", "", "runas", 1 -- This post on narkive: http://narkive.com/TLYkoKXK.7
isabelle
peut l'essayer, en adaptant avec le chemin complet de ton fichier vbs
Sub test() Shell Environ("COMSPEC") & " /c start """" ""C:test.vbs""", 1 End Sub
isabelle
Le 2015-03-12 14:46, quicksilvain a écrit :
isabelle wrote:
bonjour, est ce que tu utilises cette commande ? Shell Environ("COMSPEC") & " /c start """" ""C:test.vbs""", 1 isabelle
Merci non j'utilise ce code vba pour faire appel au vbscript:
Shell "wscript C:fichier.vbs", vbNormalFocus
Et voici le code qui se trouve dans le fichier vbscript:
If WScript.Arguments.length =0 Then Set objShell = CreateObject("Shell.Application") objShell.ShellExecute "WScript.exe", Chr(34) & _ WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1 Else
'Mon code ici
End If
peut l'essayer, en adaptant avec le chemin complet de ton fichier vbs
Sub test()
Shell Environ("COMSPEC") & " /c start """" ""C:test.vbs""", 1
End Sub
isabelle
Le 2015-03-12 14:46, quicksilvain a écrit :
isabelle wrote:
bonjour,
est ce que tu utilises cette commande ?
Shell Environ("COMSPEC") & " /c start """" ""C:test.vbs""", 1
isabelle
Merci non j'utilise ce code vba pour faire appel au vbscript:
Shell "wscript C:fichier.vbs", vbNormalFocus
Et voici le code qui se trouve dans le fichier vbscript:
If WScript.Arguments.length =0 Then
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "WScript.exe", Chr(34) & _
WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
peut l'essayer, en adaptant avec le chemin complet de ton fichier vbs
Sub test() Shell Environ("COMSPEC") & " /c start """" ""C:test.vbs""", 1 End Sub
isabelle
Le 2015-03-12 14:46, quicksilvain a écrit :
isabelle wrote:
bonjour, est ce que tu utilises cette commande ? Shell Environ("COMSPEC") & " /c start """" ""C:test.vbs""", 1 isabelle
Merci non j'utilise ce code vba pour faire appel au vbscript:
Shell "wscript C:fichier.vbs", vbNormalFocus
Et voici le code qui se trouve dans le fichier vbscript:
If WScript.Arguments.length =0 Then Set objShell = CreateObject("Shell.Application") objShell.ShellExecute "WScript.exe", Chr(34) & _ WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1 Else
'Mon code ici
End If
MichD
Si tu préfères, tu peux utiliser ceci si tu as une installation Windows Standard.
'-------------------------------------------------------- Sub Test() Dim Exécutable As String, Fichier As String
'Le programme qui ouvre le fichier .vbs est : "cscript.exe" 'La localisation de ce dernier est : 'Windows 32 bits ==>> C:windowsSystem32 'Windows 64 bits ==>> C:windowsSysWow64
Shell Exécutable & Fichier, 0 End Sub '--------------------------------------------------------
Cela te convient...
Si tu préfères, tu peux utiliser ceci si tu as une installation Windows
Standard.
'--------------------------------------------------------
Sub Test()
Dim Exécutable As String, Fichier As String
'Le programme qui ouvre le fichier .vbs est : "cscript.exe"
'La localisation de ce dernier est :
'Windows 32 bits ==>> C:windowsSystem32
'Windows 64 bits ==>> C:windowsSysWow64
Si tu préfères, tu peux utiliser ceci si tu as une installation Windows Standard.
'-------------------------------------------------------- Sub Test() Dim Exécutable As String, Fichier As String
'Le programme qui ouvre le fichier .vbs est : "cscript.exe" 'La localisation de ce dernier est : 'Windows 32 bits ==>> C:windowsSystem32 'Windows 64 bits ==>> C:windowsSysWow64
Merci -- This post on narkive: http://narkive.com/TLYkoKXK.10
MichD
Peux-tu être précis dans la définition de ton problème et ce que tu veux faire?
Quelle version de Windows as-tu? 32 ou 64 bits?
Est-ce que tu es admin sur l'ordinateur où tu veux exécuter le fichier .VBS? Je ne travaille pas en réseau, je suis le seul usager de mon ordinateur et je suis ADMIN. Je ne peux pas testé sur un compte usager non admin.
Si tu es dans un réseau, est-ce que tu as les droits nécessaires pour exécuter un fichier .vbs?
Dans ta ligne de code : objShell.ShellExecute "wscript.exe", C:fichier.vbs -1", "", "runas", 1
Que signifie le -1 ?
Place ton fichier .VBS dans un répertoire que tu crées par exemple dans le répertoire c:UsersTon profilDocuments
Ceci fonctionne aussi :
'------------------------------------------ Sub test1() Dim ObjShell As Object
Set ObjShell = CreateObject("Shell.Application") ObjShell.ShellExecute "wscript.exe", "c:UsersTonProfilDocumentsTonFichier.vbs", "runas", "", 0
End Sub '------------------------------------------
Ceci aussi fonctionne : '------------------------------------------ Sub test3() Dim Exécutable As String, Fichier As String
'Le programme qui ouvre le fichier .vbs est : "cscript.exe" 'La localisation de ce dernier est : 'Windows 32 bits ==>> C:windowsSystem32 'Windows 64 bits ==>> C:windowsSysWow64
Shell Exécutable & Fichier, 0 End Sub '------------------------------------------
Peux-tu être précis dans la définition de ton problème et ce que tu veux
faire?
Quelle version de Windows as-tu? 32 ou 64 bits?
Est-ce que tu es admin sur l'ordinateur où tu veux exécuter le fichier .VBS?
Je ne travaille pas en réseau, je suis le seul usager de mon ordinateur et
je suis ADMIN.
Je ne peux pas testé sur un compte usager non admin.
Si tu es dans un réseau, est-ce que tu as les droits nécessaires pour
exécuter un fichier .vbs?
Dans ta ligne de code :
objShell.ShellExecute "wscript.exe", C:fichier.vbs -1", "", "runas", 1
Que signifie le -1 ?
Place ton fichier .VBS dans un répertoire que tu crées par exemple dans le
répertoire
c:UsersTon profilDocuments
Ceci fonctionne aussi :
'------------------------------------------
Sub test1()
Dim ObjShell As Object
Set ObjShell = CreateObject("Shell.Application")
ObjShell.ShellExecute "wscript.exe",
"c:UsersTonProfilDocumentsTonFichier.vbs", "runas", "", 0
End Sub
'------------------------------------------
Ceci aussi fonctionne :
'------------------------------------------
Sub test3()
Dim Exécutable As String, Fichier As String
'Le programme qui ouvre le fichier .vbs est : "cscript.exe"
'La localisation de ce dernier est :
'Windows 32 bits ==>> C:windowsSystem32
'Windows 64 bits ==>> C:windowsSysWow64
Peux-tu être précis dans la définition de ton problème et ce que tu veux faire?
Quelle version de Windows as-tu? 32 ou 64 bits?
Est-ce que tu es admin sur l'ordinateur où tu veux exécuter le fichier .VBS? Je ne travaille pas en réseau, je suis le seul usager de mon ordinateur et je suis ADMIN. Je ne peux pas testé sur un compte usager non admin.
Si tu es dans un réseau, est-ce que tu as les droits nécessaires pour exécuter un fichier .vbs?
Dans ta ligne de code : objShell.ShellExecute "wscript.exe", C:fichier.vbs -1", "", "runas", 1
Que signifie le -1 ?
Place ton fichier .VBS dans un répertoire que tu crées par exemple dans le répertoire c:UsersTon profilDocuments
Ceci fonctionne aussi :
'------------------------------------------ Sub test1() Dim ObjShell As Object
Set ObjShell = CreateObject("Shell.Application") ObjShell.ShellExecute "wscript.exe", "c:UsersTonProfilDocumentsTonFichier.vbs", "runas", "", 0
End Sub '------------------------------------------
Ceci aussi fonctionne : '------------------------------------------ Sub test3() Dim Exécutable As String, Fichier As String
'Le programme qui ouvre le fichier .vbs est : "cscript.exe" 'La localisation de ce dernier est : 'Windows 32 bits ==>> C:windowsSystem32 'Windows 64 bits ==>> C:windowsSysWow64