将文件类型注册为脚本

将文件类型注册为脚本

.bat.exe和等文件类型.vbs允许您将文件拖放到它们上面,然后这些文件会自动作为参数传递给该文件类型。有没有办法将其设置为适用于自定义文件类型?

即,我有一个以 格式.dan运行的文件类型。我可以注册将文件路径传递给它并将其放在上面吗?Dans.exeDans testFile.dan arg1 arg2 argn.dan

答案1

实现此目的的方法是配置注册表。幸运的是,您无需管理员权限即可完成此操作。

您需要的四件事是:

  • 包含用于启动文件的默认程序 ID 的扩展密钥
  • 包含以下内容的 prog ID
    • 打开文件的命令
    • 文件拖放处理程序 - 这是实现拖放的功能
  • 用户选择的文件扩展名中设置的 prog ID 的哈希值

这看起来有点像

[HKEY_CURRENT_USER\SOFTWARE\Classes\dotnetScriptFile\shell\open\command]
@="\"C:\\Users\\Dan\\Dans.exe\" \"%1\" %*"

[HKEY_CURRENT_USER\SOFTWARE\Classes\dotnetScriptFile\shellex\DropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\.csx\OpenWithProgids]
"dansFile"=hex(0):

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.csx\OpenWithList]
"a"="{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\\OpenWith.exe"
"MRUList"="ba"
"b"="dans.exe"

为了真正生成这些信息,我使用了修改后的版本聚苯乙烯可以找到这里。使用 repo 中的 PowerShell 脚本,您可以在命令提示符中运行以下命令,将密钥添加到您的注册表中。

powershell -ExecutionPolicy Bypass -command "& { . .\SFTA.ps1; Register-FTA-Command '"""%USERPROFILE%\Dans.exe""" """%%1""" %%*' '.dan' 'danFile' -Verbose }"
powershell -ExecutionPolicy Bypass -command "& { . .\RegisterDropHandler.ps1; RegisterDropHandle 'danFile' -Verbose }"

需要注意以下几点:

  • a中的 hasOpenWithList生成起来相当复杂,因此无法复制粘贴。不幸的是,这就是为什么需要 PowerShell 脚本的原因。

相关内容