问题标签 [file-association]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1093 浏览

delphi - 将特定的文件扩展名与我的 delphi 应用程序相关联 - 有任何库吗?

到目前为止,如果我必须将文件扩展名与我的应用程序相关联,我曾经只是简单地修改注册表。但是我已经很多年没有这样做了,我担心事情可能会有所改变。我不知道如何防止 Windows 7 / Vista 中的注册表访问限制(如果有 HKEY_CLASSES_ROOT 的话)。因此,我正在寻找一些在 XP、Vista 和 7 下可靠运行的 delphi 库、单元、代码片段或任何东西。是否也有处理“备份”的东西?通过备份,我的意思是可以将更改恢复到以前的关联......

0 投票
4 回答
25376 浏览

windows - 我怎样才能简单地“运行”lisp文件

Python

当我学习 Python 时,我用一个不错的 gui 安装程序将它安装在 windows 上,所有 .py 文件都会从命令行或资源管理器自动在 python 中运行。

我发现这非常直观和简单,因为我可以立即制作纯文本文件并运行它们。

语言

我开始学习 lisp 并决定(从评论中)SBCL 不是一个糟糕的 lisp 实现。

有没有办法设置 SBCL 以像使用 Python 一样轻松运行 .lisp 文件?

是否还有其他具有此功能的 lisp 实现?

0 投票
1 回答
482 浏览

clickonce - ClickOnce 应用程序更新引发有关 FileAssociation 的异常

System.NullReferenceException:对象引用未设置为对象的实例。

在 System.Deployment.Application.ShellExposure.RemoveFileAssociationCLSIDInfo(文件关联文件关联,DefinitionIdentity subId,RegistryKey classesKey,String clsIdString,String productName)

在 System.Deployment.Application.ShellExposure.RemoveFileAssociation(文件关联文件关联,DefinitionIdentity subId,字符串产品名称)

在 System.Deployment.Application.ShellExposure.RemoveShellExtensions(DefinitionIdentity subId,AssemblyManifest appManifest,String productName)

在 System.Deployment.Application.ShellExposure.UpdateShellExtensions(SubscriptionState subState,ShellExposureInformation & shellExposureInformation)

在 System.Deployment.Application.ShellExposure.UpdateSubscriptionShellExposure(SubscriptionState subState)

在 System.Deployment.Application.SubscriptionStore.CommitApplication(SubscriptionState& subState, CommitApplicationParams commitParams)

在 System.Deployment.Application.DeploymentManager.SynchronizeCore(布尔阻塞)

在 System.Deployment.Application.DeploymentManager.Synchronize()

在 System.Deployment.Application.ApplicationDeployment.Update()

在 Detechtion.Simulator.WPFApp.WindowMain.CheckUpdatesCommandExecuted(对象发送者,ExecutedRoutedEventArgs e)

0 投票
1 回答
8160 浏览

registry - 如何正确地将文件关联添加到 Windows 注册表?

我应该将哪些数据和位置添加到 Windows 注册表以正确创建文件关联?

我问这个问题主要是因为我多年前编写的一些旧应用程序,它们使用 Visual Studio .NET 的 Windows Installer 打包程序来创建文件关联。我安装的扩展是.whr.encxml.

现在,在安装了这些应用程序的计算机上,有时会出现一个奇怪的问题- 当在 Google Chrome 或 Internet Explorer 中下载文件(尤其是 exe、msi 或 zip 文件)时,浏览器会将文件扩展名更改为我的安装程序安装的扩展。我不知道它是否会影响其他浏览器 - 这两者有什么共同点吗?所以...如果您下载,例如,http://example.com/downloads/application.exe,该文件将下载为http://example.com.downloads/application.encxml(或 .whr,以哪个为准它暂时选择的一个)没有任何明显的原因。

我应该注意到HKCR\.whrHCKR\.encxml密钥参考(Account Manager Encrypted XML File and Work Hours Record)中有空格,当我在 Visual Studio 中创建关联时,我没有添加“。” 到前面来。也许不允许使用空格,和/或您应该以“。”作为前缀?注册表代码似乎没问题,但是通过查看我的注册表,我注意到所有其他应用程序都没有使用关联类中的空格,而且我知道的任何机器上安装的任何应用程序的任何其他文件扩展名也不会发生此问题 - 仅由我的应用程序的 VS 安装程序创建的那些。我已经粘贴了与文件扩展名相关的相应注册表项和值的注册表转储 - 因为 MSI 是专有的,所以我不知道这是否就是全部,但从我从其他应用程序中知道的情况来看,这应该是一切。我' 多年来一直想知道这个问题,但一直想不通。我很快就会用更新的产品替换其中一个旧应用程序,所以这次我想确保没有像这样的奇怪错误......

这是数据(请注意,我已经在值下方用 // 注释指示了一些二进制字符串的文本值):




0 投票
1 回答
1747 浏览

vb.net - 在 VB.NET 中创建文件关联?

如何将文件类型与他的应用程序相关联?我知道如何读取命令行参数,但我不确定如何在 Windows 中“注册”文件扩展名。此外,我的应用程序是一个独立的可执行文件,那么如何让 Windows 在我的程序位置上保持最新?

我做了相当多的搜索,我能找到的都是旧文章,并没有解释一切。如何在 VB.NET 中创建与独立可执行文件的文件关联?

0 投票
2 回答
5490 浏览

c++ - 使用 Windows API 获取文件关联

我正在使用 C++ 为 Windows 开发基于控制台的文件浏览器,并且很难将上下文菜单组合在一起,该菜单列出与文件关联的操作并在它们上调用命令。目前最大的问题是将操作与文件类型相关联。

我知道在 HKEY_CLASSES_ROOT 中打开和调整注册表项的过程,但我找不到实际获取操作及其命令的方法,因此我可以从中构建上下文菜单。

注册表中这些协会的一般结构是:

HKEY_CLASSES_ROOT\(extension)\(default) - 文件类型
HKEY_CLASSES_ROOT\filetype\(default) - 文件类型描述
HKEY_CLASSES_ROOT\filetype\shell\action\(default) - 操作描述
HKEY_CLASSES_ROOT\filetype\shell\action\command\(默认) - 对文件调用的命令

我想知道是否有一种方法(希望使用 Windows API)可以获得与文件类型相关的所有操作。至少我可以在注册表中检查这些操作的命令......

此外,这种方法似乎不适用于我系统上的一些常见文件类型(例如 mp3),因为默认键留空,另一个键(“PercievedType”)设置为音频......我怎样才能得到这些动作对于这样的事情?

最后,如果有更好的方法来做到这一点,我很乐意听到它,我通常讨厌与注册表打交道。我宁愿有一个简单的 Windows 调用,它可以让我得到动作和命令......

0 投票
4 回答
16126 浏览

windows-7 - Windows 7 文件扩展名关联

我特指Windows 7。

我有将某个扩展名与我的应用程序相关联的代码,如 webJose 在以下页面上提出的那样: 哪些注册表项负责文件扩展名关联? (但是我按照建议正确写入 HKEY_CURRENT_USER\Software\Classes 而不是 HKEY_CLASSES_ROOT)

上述方法最初有效,或者如果没有与扩展相关的其他程序。然而,在使用 Windows 7 内置的“选择默认程序...”(在“打开方式”下的文件右键单击上下文菜单下找到)后,它会将扩展名与您选择的任何新程序重新关联。

此时发生的情况是系统更改了“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\\UserChoice”,因此新选择的程序会接管。

运行上面的代码,重新获得对扩展的控制是行不通的。重新获得控制权的唯一方法是:

  1. 编辑 UserChoice -> Progid 值,这是不允许的(既不以编程方式也不使用 regedit.exe - 拒绝访问)。
  2. 或者删除 UserChoice 值并确保您的应用程序是 \OpenWithList 下 MRUList 值中的第一个(这可以使用 regedit.exe 来实现,但不能以编程方式实现)

我的问题是:有没有办法以编程方式实现这一目标?在与另一个程序关联后,可以更改哪些注册表值以重新获得对扩展的控制?

我知道,如果用户通过资源管理器将关联的应用程序设置为扩展,那么它可能会以同样的方式再次将扩展重新关联到不同的应用程序,这似乎很明显。

然而问题是我的应用程序中有一个按钮,它使用上述代码检查与我的应用程序的扩展关联。不幸的是,在上述情况下,我的应用程序会显示一条消息,确认该扩展程序已成功关联,但未成功关联!那么有没有办法解决这个问题?

0 投票
2 回答
2617 浏览

wpf - WPF;点击一次;双击文件启动;对比 2008

我的应用程序仅供我和同事使用,所以我不在乎它是 Click-Once 还是 copy-the-exe。我希望能够在 Windows 资源管理器中单击具有给定扩展名的文件,并让我的程序启动并打开该文件。我无法让它捕获文件名。

表面上的解决方案:

http://blogs.msdn.com/b/avip/archive/2008/10/27/wpf-supporting-command-line-arguments-and-file-extensions.aspx

我正在尝试的代码如下,此时我要做的就是将单击的文件的名称放在文本框中。我怀疑我的相关无知是关于如何从 Windows 资源管理器中引用单击一次应用程序。当我构建时,我最终得到一个名为 setup.exe 的文件,一个名为 Wis.application 的文件,当我单击“setup”进行安装时,我最终得到一个类型为“Click-once application reference”的快捷方式。 C:\Users\ptom\AppData\Roaming\Microsoft\Windows\开始菜单\程序\Wis”。我尝试将文件与安装创建的快捷方式相关联,并将文件与 setup.exe 相关联。当我单击该文件时,应用程序启动,但表明 AppDomain.CurrentDomain.SetupInformation.ActivationArguments 为空。(通过“表示” 我的意思是文本框被我测试的文本填充以查看它是否为空)。如果我从调试运行应用程序,或者只是从开始菜单运行它,它会按照我的预期执行,遵循指示 ActivationArguments 不为空,但它的 ActivationData (string[]) 是长度的代码路径0。

这是来自 app.xaml.cs 的代码

谢谢

0 投票
4 回答
4968 浏览

delphi - 如何以编程方式更改文件关联而无需提升

当用户没有管理员/提升权限(Win XP、Vista、7)时,如何以编程方式更改文件关联?关于如何解决这个问题的任何想法?基本上我想让我的应用程序像现在一样精简(它不需要提升权限来安装和运行)。目前我提供了一个 GUI 界面,用户可以在其中更改文件关联,但如果用户的权限有限,它所做的只是显示一条消息,它不能这样做,并向它解释如何激活“运行此程序作为管理员”框,然后重新启动程序。如果用户有权限,那么我只需更改关联。

有更好的方法来做到这一点并保持“精简”吗?

0 投票
2 回答
12442 浏览

c# - C# - 拒绝对注册表项“HKEY_CLASSES_ROOT\”的文件关联访问

我目前有一个使用注册表设置文件关联的程序(注意,它是 .NET 2.0,所以我必须通过注册表方法)。问题是,由于它正在尝试写入 HKCR,它可能会遇到管理问题(在其他机器上)。是否有更通用的方法来设置文件关联(对于 .NET 2.0),例如使用 HKCU 或其他不需要管理权限的方法。