某些软件“PROGRAM”安装在客户端PC上,“PROGRAM”可能有不同的版本,因此安装方式也不同。有一个文件有一定的扩展名“.XXX”,这个扩展名与“PROGRAM”相关联,即 在 Windows 资源管理器中双击此文件会打开包含文件内容的“程序”。在命令行中输入该文件的路径也会打开“PROGRAM”。这里一切都很好。
现在的任务:您需要在“PROGRAM”中打开一个扩展名为“.XXX”的特定文件,但带有一个附加参数(已知)。
如何使用命令行来做到这一点?
如果这是不可能的,我可以编写一个应用程序 (C#),它将获取与注册表中某处的“.XXX”扩展名关联的程序的路径并运行它,但前提是这不需要任何特权。
操作系统:Windows 7 SP1
重现问题的示例:
Notepad++已安装,它与“.TXT”文本文件相关联,它还有一个-ro
以只读模式打开文件的选项。应用程序本身的路径是未知的。
如果我在命令行输入
"C:\Program Files\Notepad++\notepad++.exe" "C:\Users\User\Desktop\1.txt"
然后文件正常打开
如果我输入:
"C:\Program Files\Notepad++\notepad++.exe" "C:\Users\User\Desktop\1.txt" -ro
然后进入只读模式。
但是我不知道路径“C:\Program Files\Notepad++\notepad++.exe”,所以我这样打开它:
"C:\Users\User\Desktop\1.txt"
文件正常打开
如果我输入:
"C:\Users\User\Desktop\1.txt" -ro
文件仍然正常打开
如何以只读模式打开文件,但可执行文件的路径未知。更改文件关联对我不起作用。
原则上,设置与文件类型的关联允许您公开所需的任何调用。默认情况下,它看起来类似于
prog.exe "%1"
被%1
点击文件的名称。你可以用ftype
and改变它assoc
:双击或从命令行调用时,除文件名外,
/arg1 /arg2
AssocStr.ASSOCSTR_EXECUTABLE
用和调用".txt"
。示例代码取自另一个英文答案。
作为一个可能的想法,您可以将您的应用程序添加到App Paths。同时,可以在没有完整路径的情况下使用替代名称运行它:
但是如果你这样做,你可以把一个新名字的 bat 文件放在一个可以访问的地方。
我曾经解决了启动 Access 的问题,可以通过不同的方式安装。从注册表中获取安装路径。