我正在制作两个HTA应用程序。一个是安装另一个。下面的代码是安装程序HTA中的VBScript,它使计算机识别.sjs扩展名(我已经创建的扩展名,与安装的HTA有关)。
Public Sub Association(EXT, FileType, FileName, Icon)
Set b = CreateObject("wscript.shell")
b.regwrite "HKCR\" & EXT & "\", FileType
b.regwrite "HKCR\" & FileType & "\", "MY file"
b.regwrite "HKCR\" & FileType & "\DefaultIcon\", Icon
b.regwrite "HKCR\" & FileType & "\shell\open\command\", FileName & " %L"
b.regdelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\Application"
b.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\Application", FileName
b.regdelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\OpenWithList\"
b.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\OpenWithList\a", FileName
End Sub
Association ".sjs", "SJS file", "C:\Users\Donald\my_app.hta","C:\Users\Donald\Desktop\my_icon.ico"
我希望这样做,当我打开一个.sjs文件时,它会打开文件C:\ Users \ Donald \ my_app.hta,但是就像这样打开一个对话框,它会显示" C :\ Users \ Donald \ Documents \ file.sjs不是有效的Win32应用程序"。我怎么能按照我的意愿这样做?
答案 0 :(得分:2)
On Error Resume Next
而不进行错误检查是不负责任的。[Dim ] xxx As Object
不是有效的VBScript。 (应该是:[Dim ] xxx As yyy
强调所有类型的声明在VBScript中都是非法的)修复此问题并重试。使用ftype
和assoc
检查注册表操作的结果。
第二个想法:
我认为应该/必须使用mshta.exe
打开.HTA文件。 (应该明确地"在某处;见下文)
<强>更新强>
我使用isql.hta以交互方式处理ADO数据库。参数和语句存储在.isql文本文件中。所以试图模仿你的问题:&#34;我想要与isql.hta应用程序相关的.isql文件;成功的证明:双击.isql文件打开isql.hta&#34;。所以
assoc .isql=ISQLFile
.isql=ISQLFile
ftype ISQLFile="X:\pathto\isql.hta" %*
ISQLFile="X:\pathto\isql.hta" %*
Doubleclick =>
---------------------------
M:\lib\amfvbs0703\amsinc.isql
---------------------------
M:\lib\amfvbs0703\amsinc.isql is not a valid Win32 application.
---------------------------
OK
---------------------------
M: is a mapped drive; so Windows thinks it's enemy country.
ftype ISQLFile=c:\WINDOWS\system32\mshta.exe "X:\pathto\isql.hta" %*
ISQLFile=c:\WINDOWS\system32\mshta.exe "X:\pathto\isql.hta" %*
Doubleclick => SUCCESS