使用 .hta 文件打开文件

Open a file with a .hta file

我正在制作两个 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 isn't a valid Win32 application".我怎样才能让它按照我的意愿运行?

  1. 不检查错误就使用On Error Resume Next是不负责任的
  2. [Dim ] xxx As Object 不是有效的 VBScript。 (应该是:[Dim ] xxx As yyy 以强调 所有 类型的声明在 VBScript 中都是非法的)

解决这个问题,然后重试。使用 ftypeassoc 检查注册表操作的结果。

再想想:

认为 .HTA 文件should/must 可以用mshta.exe 打开。 (应该在某处有一个 "explicitly";见下文)

更新:

我使用 isql.hta 以交互方式使用 ADO 数据库。参数和语句存储在 .isql 文本文件中。所以试图模仿你的问题:"I want .isql files associated with the isql.hta application; proof of success: doubleclick on .isql file opens isql.hta"。所以

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