我想写一个批处理文件,确保当用户点击.JNLP文件时,它会打开使用javaws.exe(位于程序文件/ java / ...中,你知道钻孔)
我写了以下批处理文件:
ASSOC .jnlp=JNLPFILE
IF EXIST "%ProgramFiles% (x86)" (GOTO x86) ELSE (GOTO x64)
:x86
FTYPE JNLPFILE="%ProgramFiles% (x86)\Java\jre7\bin\javaws.exe" "%1"
goto:eof
:x64
FTYPE JNLPFILE="%ProgramFiles%\Java\jre7\bin\javaws.exe" "%1"
我正在Windows 7 64位中测试这一切。
这......不起作用。嗯,那不完全准确。它正确地修改了注册表,并将.jnlp添加到要运行的推荐程序的Windows列表中。它完全符合它的要求。
但它并没有解决我的问题。请参阅,为了进行测试,我使用记事本访问了默认程序和关联的.jnlp文件。当我尝试打开.Jnlp文件时,即使我的代码运行,IT也会尝试在记事本中打开。
如果我在.jnlp上打开,它可以让我选择用记事本或javaws.exe打开如果我用ASSOC运行我的代码,它会添加一个javaws.exe的SECOND选项< / p>
我已经尝试过ASSOC .jnlp =&#34;&#34;和FTYPE JNLPFILE =&#34;&#34;尝试清除记事本,但没有运气。
如何让我的批处理文件在先前的设置中被吹走并断言它在机器上的主导地位?
编辑:使用下面的答案,我在我的批处理文件的开头添加了一个命令,它应该解决我的问题并使事情正常工作。
REG DELETE HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jnlp /f
答案 0 :(得分:2)
Windows资源管理器为用户保留自己的文件扩展名列表。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts
要从此列表中删除程序,请从
中删除程序条目
- HKCU \软件\微软\的Windows \ CurrentVersion \ Explorer中\ FileExts \。JNLP \ OpenWithList
- HKCU \软件\微软\的Windows \ CurrentVersion \ Explorer中\ FileExts \的.jnlp \ OpenWithProgIDs
并在
中设置所需的UserChoice Progid
- HKCU \软件\微软\的Windows \ CurrentVersion \ Explorer中\ FileExts \的.jnlp \ UserChoice
另请注意,OpenWithList和OpenWithProgids可以设置为多个级别。
- HKCU \软件\微软\的Windows \ CurrentVersion \ Explorer中\ FileExts \名为.xyz \ OpenWithList
- HKCU \软件\微软\的Windows \ CurrentVersion \ Explorer中\ FileExts \名为.xyz \ OpenWithProgIDs
- HKCR \名为.xyz \ OpenWithList
- HKCR \名为.xyz \ OpenWithProgIDs
- HKCR \ SystemFileAssociations \文件类型\ OpenWithList