Bonjour,

J'ai pas mal cherché (Recherche et FAQ), mais je n'ai pas trouvé mon bonheur. En espérant que la réponse n'est pas sous mes yeux

J'ai un script de mise à jour qui doit enregistrer une dll, bien évidement, il faut être admin, donc runas et tout et tout.

Le code (simplifié) ressemble à ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Set wsh=WScript.CreateObject("WScript.Shell")
File = "C:\Progra~1\Nexfi\TrackerDev\Malib.dll"
regCmd = "regsvr32 " & File
RunasCmd = "runas /user:admin """ & regCmd& """"
wsh.Run RunasCmd
Là, aucun problème, ça marche, c'est cool. Seulement voilà, dans le script complet, la variable 'File' arrive toute bien initialisée avec un magnifique nom long et son espace au milieu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
File = "C:\Program Files\Nexfi\TrackerDev\Malib.dll"
Du coup, le regsvr32 m'explique gentilment qu'il ne trouve pas C:\Program

Bon, ben moi, pas con, j'ajoute des guillemets, parceque les guillements, c'est bien:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
File = """C:\Program Files\Nexfi\TrackerDev\Malib.dll"""
Et là, déception, la chaîne de caractères finale ressemble à ça:
runas /user:javault_m "regsvr32 "C:\Program Files\Nexfi\TrackerDev\Malib.dll""
Et bien entendu, ça ne fonctionne pas très bien

J'ai essayé pas mal de combinaisons avec, entre autre, utilisation de cmd /c, rien à faire, il y a toujours au final une commande dont l'argument doit être entre guillement, commande qui prend elle aussi un paramètre entre guillemet...

Je vais poursuivre mes recherches, mais si quelqu'un a la réponse, je suis plutôt preneur.

Merci d'avance.

Marc