Articles of 文件关联

使用Java 1.5打开文件的跨平台方法

我正在使用Java 1.5,我想启动关联的应用程序来打开文件。 我知道Java 1.6引入了桌面API ,但是我需要Java 1.5的解决scheme。 到目前为止,我在Windows中find了一个方法: Runtime.getRuntime().exec(new String[]{ "rundll32", "url.dll,FileProtocolHandler", fileName }); 是否有跨平台的方式来做到这一点? 或者至less有一个类似的Linux解决scheme?

C ++程序需要一个文件关联

我正在发行一个免费软件产品,用一个独特的扩展名来读写文本文件。 我希望双击这样的文件会自动启动应用程序。 在Windows 7 Professional上开发时,我通过双击打开文件,方法是右键单击文件 – >打开方式…->select默认程序…->浏览…,然后“总是使用选定的程序来打开这种types的文件。” 好。 它只是做了它需要的。 我准备发布我的程序,并提供给用户相同的说明。 但是,当我移动二进制文件的位置时,我看到“总是使用”现在变成灰色/不敏感,所以虽然我可以浏览到新的二进制文件,但我不能将其设置为默认值。 由于我认为我的用户也会遇到麻烦,所以我想看看是否可以安装或运行程序来处理映射。 我看了Windows安装程序大约5分钟,然后确定它比我需要更多的权力和复杂性(为了我的需要,一个zip文件将是足够的,除了这个文件映射。 所以我看了一下,让我的程序在启动的时候,如果已经不存在的话,就build立映射本身。 (我知道如果我们谈论的是一个普通的文件types,如.html或.jpg,这将是非常糟糕的行为,但在这种情况下,它的一些.blahblah扩展肯定没有其他人使用任何东西。) 基于http://www.cplusplus.com/forum/windows/26987/和http://msdn.microsoft.com/en-us/library/cc144148(v=vs.85).aspx上的信息,我可以让我的程序在启动时打开HKEY_CLASSES_ROOT \ .blahblah,并确认(并在需要时更改)默认文本是对文件的精确描述(replace一些文本,这些文本可能在我手动关联时默认创build夏季)。 但是,当创buildHKEY_CLASSES_ROOT \ firm.app.1 \ shell \ open \ command时,我的RegCreateKeyEx()包装程序正常工作以更改\ .blahblah的值,现在给出返回代码5,显然是缺less权限。 在进一步的研究看来,权限模型可能会导致所有这样的请求失败。 任何人都可以证实或否认这一点? 如果确认,是否有一个很好的参考我应该研究这个问题? 否则,有什么build议? 我应该咬紧牙关学习Windows Installer吗? 还是有办法获得我自己的软件第一次启动时需要编辑registry的权限? 注意我正在使用Windows 7 Professional上的Visual Studio 2008进行开发,尽pipe仍然是一个业余的Windows程序员,但自80年代以来,我一直在从事Unix / Linux的C ++工作。

C ++:如何正确地注册和注销我们的应用程序的文件types关联(编程)

时间是你在下面设置文件关联的时候: HEY_CLASSES_ROOT \ <分机> 但是,这似乎是可能的,但不完整的解决scheme了。 整个registry中还有其他关联。 例如: HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ KindMap HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Extensions 以上所有内容都是由HKEY_USERS \ 微软添加了他们的设置默认关联控制面板小程序,它控制着什么? 我正在寻找一个白皮书,或讨论: “用C / C ++编写的现代Windows XP-Windows 7兼容应用程序如何在不干扰资源pipe理器,用户设置或默认关联cpl的情况下注册和操作其文件关联” 编辑:我想在这里进一步调查与更多的问题: 如何从Windows卸载时从其他用户帐户删除ProgIDs?

Windows:更改与文件types关联的应用程序的名称/图标

我想将Windows中的文件types与特定的应用程序关联起来,但是当用户打开“打开方式”菜单时,需要将该文件types与列表中的应用程序的名称和图标进行自定义即不是简单的可执行文件的名称和图标)。 这是因为二进制文件是一个普通的二进制文件,它运行许多不同的应用程序,具体取决于它的命令行参数(类似于python.exe或javaws.exe )。 我不希望“Open With”菜单显示“Python”或“Java”,我希望它显示在命令行上传递的应用程序的名称和图标。 我知道如何添加文件关联(通过在HKEY_CLASSES_ROOT创buildProgID ,并将ProgID名称添加到OpenWithProgids或HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts ),但我找不到任何方法来更改名称或应用程序的图标显示在“打开方式”菜单中,以显示该types的文件。 这可能吗? ( 编辑澄清我对添加文件关联的现有理解。)

Windows不会将命令行parameter passing给从shell执行的Python程序

如果我试图直接从Windows命令行执行它们作为可执行命令,那么我无法获得传递给Python程序的命令行参数。 例如,如果我有这个程序(test.py): import sys print "Args: %r" % sys.argv[1:] 并执行: >test foo Args: [] 相比于: >python test.py foo Args: ['foo'] 我的configuration有: PATH=…;C:\python25;… PATHEXT=…;.PY;…. >assoc .py .py=Python.File >ftype | grep Python Python.CompiledFile="C:\Python25\python.exe" "%1" %* Python.File="C:\Python25\python.exe" "%1" %* Python.NoConFile="C:\Python25\pythonw.exe" "%1" %*

如何使用Delphi获取与文件扩展名关联的程序的名称?

我需要获取当前与当前用户的文件扩展名关联的程序的名称。 如果你右键点击一个文件并select属性,那么我需要的是“Opens with”行右边的程序名。 例如,对于“.xls”,我希望能够得到答案“Microsoft Office Excel”,或用户使用其默认程序打开.xls文件的任何程序。 我已经确定它不像进入HKEY_CLASSES_ROOT并挑选它,因为它也可以在HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER或HKEY_USERS中指定。 也许我需要知道的是Windows使用的啄食顺序来确定这个以及如何到达每个位置。 当然,一个Windows API调用来做到这一点是理想的。 这是一个类似的问题: 如何从文件扩展名使用Delphi获取图标和描述? 但是这个问题只回答了如何得到相关程序的扩展名和图标的描述。 我无法find一种方法来扩展,以获得相关的程序的名称。 我使用的是Delphi 2009,需要一个适用于Windows XP,Vista和7的解决scheme。 谢谢大家的答案。 看来我相信,可执行文件的名字毕竟不在registry中。 而广泛的四处寻找一个Windows API的名称,我找不到。 我认为Mef的答案是最好的。 从程序可执行文件中包含的信息中获取可执行文件的名称。

如何在C#中获取与文件扩展名相关的推荐程序

我想要获得与文件扩展名关联的程序的path,最好是通过Win32 API。 出现在“打开方式”菜单项目中的程序列表 显示为“打开方式…”对话框中推荐的程序列表。 UPD: 假设我在我的机器上安装了office11和office12,对于.xls的默认程序是office 11.如果看一下HKEY_CLASSES_ROOT \ Excel.Sheet.8 \ shell \ Open \ command有一个office11 excel.exe的path,但是当我右键点击文件,我可以在Open With menu项中selectoffice12。 那么这个关联存储在哪里? 我正在使用C#。 谢谢。

如何在尝试Process.Start()之前以编程方式检查文件是否存在文件关联?

我的.Net Windows窗体应用程序生成一个PDF报告,我想要显示给用户。 而不是假设客户端电脑安装了PDF查看器,并盲目地将PDF在操作系统上打开, 是否有办法检查客户端上的文件关联列表 ,然后显示“ 您需要一个PDF查看器应用程序安装 – 这里有几个build议.. “对话框,如果PDF不是注册types? 我发现了许多关于更改或注册文件关联的问题和答案,但我只是想简单地查询列表,而不是更改它。 我想要一个适用于Windows XP以上的解决scheme(WinXP,Vista,Win7)。 谢谢你的帮助

临时文件关联为单个cmd.exe会话

我需要为.py文件设置关联,以使用特定的python版本执行。 但是我只需要为单个cmd.exe会话创build这个关联(并行会话不应该受到影响)。 Windows允许这个吗? 我怀疑答案是否定的,但我希望看到一些certificate之前,抛出这个想法到virtualenv这样的function。

从命令行运行Python脚本将在默认文本编辑器中打开脚本,而不是执行脚本

我有与Python解释器相关联的.py扩展名的文件。 但是,当我在命令行中键入这样的文件的名称,然后按ENTER在默认文本编辑器(Notepad ++)中打开文件,而不是与关联的Python解释器运行。 为什么? Z:\1>where python c:\Program Files\Python\2.7\python.exe Z:\1>reg query HKCR\.py /ve HKEY_CLASSES_ROOT\.py (Default) REG_SZ Python.File Z:\1>reg query HKCR\Python.File\shell\open\command /ve HKEY_CLASSES_ROOT\Python.File\shell\open\command (Default) REG_SZ c:\Program Files\Python\2.7\python.exe "%1" %* Z:\1>echo %PATHEXT% .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW Z:\1>type a.py from __future__ import print_function; import sys; print(sys.executable); print(sys.version) Z:\1>a.py <— this opens a.py in the default text editor 我在Windows Vista x64上使用Python 2.7.3 (default, […]