2015-03-13 3 views
0

J'utilise le VBSript suivant et cela fonctionne très bien, cependant quand je tente de l'ajouter à une application .hta que j'ai créée, il ne fonctionne pas correctement.Petit VBScript ne fonctionne pas en HTA

Tout d'abord, le « strValue » ne montre pas dans le MsgBox et les erreurs de script d'autre part apparaissent comme « Incompatibilité de type: « » fso.FolderExists »

Toute aide serait grandement appréciée comme je l'ai eu du mal à comprendre cela.

sub LyncFix 

dim oReg, strKeyPath, strValueName, strValue, oWS, userProfile 

Const HKEY_LOCAL_MACHINE = &H80000002 

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
strComputer & "\root\default:StdRegProv") 

strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\C7376A18AE70EB645A6EA7E5F5CE44F9" 
strValueName = "71B0EB18B3654D541B8975126E6C56DC" 
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue 
MsgBox "Folder required to resolve Lync Install prompt: " & strValue 


Dim fso 
Dim Folder 

Set fso = CreateObject("Scripting.FileSystemObject") 

If (fso.FolderExists(strValue)) Then 
    MsgBox("The folder '" + strValue + "' already exists") 
end If 

If NOT (fso.FolderExists(strValue)) Then 
    ' Delete this if you don't want the MsgBox to show 
    MsgBox("Local folder doesn't exist, creating...") 
    ' Create folder 
    MsgBox("'" + strValue + "'" + " created") 
    fso.CreateFolder(strValue) 
    MsgBox("Please now try launching Lync again") 
End If 

end sub 
+0

1. Je ne vois pas 'valeur strComputer'; 2. ajoutez '& vbNewLine & VarType (strValue) & vbTab & TypeName (strValue)' à la première 'MsgBox'. Ensuite, vous pourriez voir des valeurs indiquant des informations sous-type _Variant_ sur la variable 'strValue' (sous forme numérique et sous forme de chaîne ainsi) – JosefZ

+0

Excuses, j'aurais dû préciser que j'ai défini strComputer plus tôt dans le hta dans le même vbscript. Serait-il bénéfique pour moi de commenter avec l'ensemble de la hta? – jERCle

Répondre

0

Deux fausses notes seulement:

  • HTML avec la méthode d'interrogation GetStringValue donne des résultats différents pour différents hôtes versions exécutables de Windows Script (32 bits contre 64 bits comme manifeste dans l'exemple suivant);
  • CreateFolder méthode peut nécessiter des privilèges élevés.

Exemple: avec strComputer = "." et la prochaine modification

' 
    oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue 
    ' the amendment in 29026643.vbs as follows: 
    Wscript.Echo VarType(strValue) & vbTab & TypeName(strValue) 
    ' 

J'ai obtenu la sortie suivante sur Windows 8, 64 bits:

==>%windir%\sysWOW64\cscript.exe D:\VB_scripts\SO\29026643.vbs 
1  Null 

==>%windir%\system32\cscript.exe D:\VB_scripts\SO\29026643.vbs 
8  String 

==> 

sortie Analogue (avec fenêtré echo) avec différents versions de wscript.exe.

sortie Analogue avec sub LyncFix défini et utilisé dans un hta de base (avec msgbox au lieu de Wscript.Echo) et avec des versions différentes de mshta.exe comme suit:

==>%winDir%\sysWOW64\mshta.exe D:\VB_scripts\SO\29026643.hta 

==>%winDir%\system32\mshta.exe D:\VB_scripts\SO\29026643.hta 
+0

Merci! Ce genre a juste allumé un interrupteur dans ma tête quand j'ai lu ceci. J'ai enveloppé le hta dans un fichier exe afin que je puisse fonctionner en tant qu'administrateur. Envelopper dans un exe 64 bits a résolu le problème. Merci encore! – jERCle