2015-03-13 84 views
0

我正在使用以下VBSript并且工作正常,但是当我尝试将其添加到创建的.hta应用程序时,它无法正常工作。小型VBScript在HTA中不起作用

首先,“strValue的”不中MSGBOX显示其次脚本错误出现如“类型不匹配:fso.FolderExists'”

任何帮助,因为我一直在努力将不胜感激想出解决办法。

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.我没有看到'strComputer'值; 2.将'&vbNewLine&VarType(strValue)&vbTab&TypeName(strValue)'添加到第一个'MsgBox'。然后你可以看到指示_variant_子变量类型信息的值(数字和字符串形式) – JosefZ 2015-03-13 09:56:34

+0

道歉,我应该说我已经在hta中早些时候在同一个vbscript中定义了strComputer。对我评论整个hta会有好处吗? – jERCle 2015-03-14 10:24:41

回答

0

两个并排笔记只:

  • 查询HTMLGetStringValue方法给出了不同Windows脚本宿主可执行版本不同的结果(32位与64位如在下面的例子中体现出来);
  • CreateFolder方法可能需要提升权限。

:与strComputer = "."和下一个修正案

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

我有在Windows 8中,64位下的输出:

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

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

==> 

类似输出(带窗口echo)具有不同wscript.exe的版本。

sub LyncFix类似输出定义和使用在碱性hta(具有msgbox代替Wscript.Echo),并用不同的版本的mshta.exe如下:

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

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

谢谢! 当我读到这个时,这只是轻弹了一下开关。我一直在包装hta在一个exe文件,所以我可以作为管理员运行。用64位exe包装它解决了这个问题。再次感谢! – jERCle 2015-03-15 23:28:52