我需要一种编程方法来将关联设置为安装程序的一部分。
我正在尝试设置文件扩展名,以便当用户双击该扩展名时,它会运行相关程序,在这种情况下为c:\ temp \ test.bat
我尝试在.bat文件中使用assoc和ftype命令但是当文件.003(仅用于测试目的)时,它仍然打开已经设置为该扩展的默认值的解包器程序。请参阅控制面板>程序>默认程序>设置关联的图像。如果我使用这个界面并更改与002文件关联的程序,那么当我双击test.002它运行test.bat时,它就可以工作。
我需要在安装中包含此关联,因此我需要能够在.bat文件中执行GUI中的操作。 .bat命令assoc和ftype似乎没有对图像中的GUI进行更改,仍然启动Unpacker而不是test.batenter image description here
答案 0 :(得分:1)
我也未能成功使用assoc
和ftype
命令。我放弃了,直接与注册表合作。
这是我从python关联的2个部分合并的注册表文件的示例。
第一部分:HKEY_CLASSES_ROOT\.py
:将扩展名与文件类型相关联。
第二部分:其余部分:将文件类型与各种操作相关联。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.py]
@="Python.File"
"Content Type"="text/plain"
[HKEY_CLASSES_ROOT\Python.File]
@="Python File"
[HKEY_CLASSES_ROOT\Python.File\DefaultIcon]
@="C:\\Python34\\DLLs\\py.ico"
[HKEY_CLASSES_ROOT\Python.File\Shell]
[HKEY_CLASSES_ROOT\Python.File\Shell\Edit with IDLE]
[HKEY_CLASSES_ROOT\Python.File\Shell\Edit with IDLE\command]
@="\"C:\\Python34\\pythonw.exe\" \"C:\\Python34\\Lib\\idlelib\\idle.pyw\" -e \"%1\""
[HKEY_CLASSES_ROOT\Python.File\Shell\Edit with Pyscripter]
@="Edit with PyScripter"
[HKEY_CLASSES_ROOT\Python.File\Shell\Edit with Pyscripter\command]
@="\"C:\\Program Files\\PyScripter\\PyScripter.exe\" \"%1\""
[HKEY_CLASSES_ROOT\Python.File\Shell\Edit with Pythonwin]
[HKEY_CLASSES_ROOT\Python.File\Shell\Edit with Pythonwin\command]
@="C:\\Python34\\Lib\\site-packages\\Pythonwin\\Pythonwin.exe /edit \"%1\""
[HKEY_CLASSES_ROOT\Python.File\Shell\editwithidle]
"MUIVerb"="&Edit with IDLE"
"Subcommands"=""
[HKEY_CLASSES_ROOT\Python.File\Shell\editwithidle\shell]
[HKEY_CLASSES_ROOT\Python.File\Shell\editwithidle\shell\edit35-32]
"MUIVerb"="Edit with IDLE 3.5 (32-bit)"
[HKEY_CLASSES_ROOT\Python.File\Shell\editwithidle\shell\edit35-32\command]
@="\"C:\\Users\\dartypc\\AppData\\Local\\Programs\\Python\\Python35-32\\pythonw.exe\" -m idlelib \"%L\" %*"
[HKEY_CLASSES_ROOT\Python.File\Shell\open]
[HKEY_CLASSES_ROOT\Python.File\Shell\open\command]
@="\"C:\\WINDOWS\\py.exe\" \"%1\" %*"
[HKEY_CLASSES_ROOT\Python.File\shellex]
[HKEY_CLASSES_ROOT\Python.File\shellex\DropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"
您可以创建/生成此类文件,然后使用REG IMPORT myregfile.reg
将值添加到注册表中。
但是您需要为此运行提升的命令提示符,否则您将获得“拒绝访问”。有很多链接到UAC /提升的shell / ...供您搜索。
特定扩展程序的最佳方式是:
regedit
&查找上述键(扩展名为文件类型并搜索文件类型)应用:
当我不得不使用python portable安装python关联时,我就这样做了。 Python portable没有设置文件关联,因为没有安装程序。所以我将.py
文件与它相关联,但是此处缺少该脚本文件的其他参数:
[HKEY_CLASSES_ROOT\Python.File\Shell\open\command]
@="\"C:\\WINDOWS\\py.exe\" \"%1\""
我刚编辑了那个键并添加了缺少的%*
所以python与参数一起工作。之后我导出了reg文件,我可以在其他机器上使用它。