Bonjour,
Je cherche à exécuter cette commande en administrateur :
J'ai bien trouvé des exemples avec ShellExecute mais j'avoue que pour moi c'est un peu du charabia.Code:
1
2 Shell ("C:\WINDOWS\SysWOW64\RegSvr32.exe " & fileName)
Merci
Version imprimable
Bonjour,
Je cherche à exécuter cette commande en administrateur :
J'ai bien trouvé des exemples avec ShellExecute mais j'avoue que pour moi c'est un peu du charabia.Code:
1
2 Shell ("C:\WINDOWS\SysWOW64\RegSvr32.exe " & fileName)
Merci
Bonjour,
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 #If VBA7 Then Declare PtrSafe Function LogonUser Lib "advapi32" Alias "LogonUserA" (ByVal lpszUsername As String, ByVal lpszDomain As String, ByVal lpszPassword As String, ByVal dwLogonType As Long, ByVal dwLogonProvider As Long, phToken As Long) As Long Declare PtrSafe Function ImpersonateLoggedOnUser Lib "advapi32.dll" (ByVal hToken As Long) As Long Declare PtrSafe Function RevertToSelf Lib "advapi32.dll" () As Long #Else Public Declare Function LogonUser Lib "advapi32" Alias "LogonUserA" (ByVal lpszUsername As String, ByVal lpszDomain As String, ByVal lpszPassword As String, ByVal dwLogonType As Long, ByVal dwLogonProvider As Long, phToken As Long) As Long Declare Function ImpersonateLoggedOnUser Lib "advapi32.dll" (ByVal hToken As Long) As Long Declare Function RevertToSelf Lib "advapi32.dll" () As Long #End If Enum MConst LOGON32_LOGON_INTERACTIVE = 2 LOGON32_PROVIDER_DEFAULT = 0 End Enum Public lngTokenHandle, lngLogonType, lngLogonProvider As Long Public blnResult As Boolean Sub TEST() If AdminLogOn("Username", "Domain", "Password") Then Shell "C:\Windows\System32\calc.exe" Shell "C:\Windows\system32\notepad.exe" Logoff End If End Sub Public Function AdminLogOn(Username, Domain, Password) As Boolean blnResult = RevertToSelf() If LogonUser( _ Username, _ Domain, _ Password, _ LOGON32_LOGON_INTERACTIVE, _ LOGON32_PROVIDER_DEFAULT, _ lngTokenHandle) = 0 Then MsgBox "Impossible d'ouvrir la session : " & Username & ". " GoTo Fin End If If blnResult = False Then MsgBox "Impossible d'ouvrir LogonUser" GoTo Fin End If blnResult = ImpersonateLoggedOnUser(lngTokenHandle) AdminLogOn = True: Exit Function Fin: AdminLogOn = False End Function Public Sub Logoff() Dim blnResult As Boolean 'MsgBox "Session fermée" blnResult = RevertToSelf() End Sub
Hello,
le souci c'est qu'il va falloir mettre le mot de passe d'un compte administrateur dans le code ce qui n'est pas très "secure".
Pourquoi veux-tu lancer une commande regsvr32 dans du code VBA. En général ceci sert à installer un composant activex. Quel genre de composant veux-tu installer ?
Ami calmant, J.P
Bonjour Thumb down, Mille merci pour votre réponse. Est-ce vraiment le code minimal pour exécuter une commande en admin ??? Je comprends mieux pourquoi je n'ai pas trop trouvé d'aide à ce sujet. Effectivement devoir mettre des mdp je ne pourrais pas car je ne serai pas le seul à utiliser ce classeur.
Bonjour jurassic pork, ben en fait je reviens sur l'aide que tu m'as donnée au sujet de mon problème avec DSO. Je me suis réveillé un matin en me disant que je voulais persister pour résoudre mon problème. Tu m'as mis la puce à l'oreille en me demandant mes versions d'office et il se trouve que tu avais touché dans le mille. Ce que j'ai découvert et que je ne savais pas, c'est que mes DLL doivent êtres enregistrées pour fonctionner. C'est pour ça qu'en les référençant simplement, la déclaration de mon objet DSO ne plantait pas mais en revanche il est impossible de l'initialiser correctement. Quand j'enregistre la bonne DLL, version office 32 ou 64 , ça fonctionne parfaitement. Le site où j'ai trouvé la DLL pour la première fois contenait un installateur (qui doit être utilisé en mode admin) que j'ai utilisé et c'est pour ça que ça fonctionnait au début. J'ai regardé le code de cet installateur et avec un peu de recherches j'en ai conclu tout ça et voila pourquoi j'en arrive à poster ce sujet. Je dois exécuter une commande "RegSvr32.exe" en mode admin avec la bonne DLL suivant la version d'office.
C'est vrai que le plus simple serait d'écrire un ficher bât et de l'exécuter en tant qu'administrateur !
Quand tu auras créer le fichier bât tu feras un click droit exécuter en temps qu'dmin
Notes également que tu as toute latitude pour exécuter Excel en tant qu'administrateur !
Pièce jointe 627707
J'avais modifier mon message!
depuis les Version Nt il faut préciser en tan qu'administrateur même si tu es admin!
ok ben écoute je te remercie mille fois pour le temps que tu as consacré à me répondre et te souhaite une excellente fin de journée.
A une prochaine peut-être.