Windows 文件关联是否正确完成?

2024-03-02

我想将我的应用程序设置为在 Windows 中具有文件关联(额外的复杂性:文件扩展名可能与其他一些不相关的应用程序冲突)。处理这种情况的最佳方法是什么?用户很可能不会同时拥有这两者,但如果两者兼得,最好的处理方式是什么?

我一直在网上搜索 stackoverflow 和其他各种网站,并且对如何做到这一点有一个基本的想法(我已经尝试过,并且它有效),但找不到关于如何最好地完成此操作的明确参考。

一些参考资料说将条目放入注册表中的 HKEY_CLASSES_ROOT 中。有人说不要这样做,而是将其放入 HKEY_LOCAL_MACHINE\Software\Classes 中。

应用程序是否还需要在 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths 或 HKEY_CLASSES_ROOT\Applications 下注册(参考上面关于 HKEY_CLASSES_ROOT 与 HKEY_LOCAL_MACHINE\Software\Classes 的讨论,这在技术上是否是正确的位置)?

我还看到一些页面建议设置“CurVer”和“OpenWithProgids”,但我不确定它们有何帮助。

我发现我可以创建

HKEY_LOCAL_MACHINE\Software\Classes.aaa (默认)AAA应用程序

HKEY_LOCAL_MACHINE\Software\Classes\AAAapp (默认)AAA应用程序 默认图标“%mypath%\to\AAAappIcon.ico” shell\open\command "%mypath%\to\AAAapp.exe" "%1"

它有效。我没有创建应用程序路径或应用程序注册表项,因此这些项似乎不会影响此问题。此外,上面似乎没有提供很好地处理系统上已存在“.aaa”文件扩展名关联的情况。

任何指导表示赞赏!


老问题——7.5 个月没有答案——但以下内容可能会帮助未来的谷歌用户(像我一样)。

HKEY_CLASSES_ROOT 是combined view of

  • HKEY_本地机器\软件\类
  • HKEY_当前用户\软件\类。

您不应该写入 HKEY_CLASSES_ROOT,而应以只读方式使用它。另外,建议的做法是写入 HKEY_CURRENT_USER\Software\Classes 而不是 HKEY_LOCAL_MACHINE,除非您确实需要为所有用户进行设置。

微软的文档看起来相当冗长和分散,所以我花了很长时间才确定我自己的小应用程序到底需要做什么。但是,最好还是先尝试一下官方文档(除非有人可以向我们指出一个可以更好解释事情的地方),如果无法理解,稍后再提出问题。

Microsoft 关于此领域的文档的入口点是“桌面应用程序技术”,位于https://msdn.microsoft.com/library/windows/desktop/bg126469.aspx https://msdn.microsoft.com/library/windows/desktop/bg126469.aspx

对于文件类型注册,它引导我“实现自定义文件格式”:https://msdn.microsoft.com/en-us/library/windows/desktop/ff521657(v=vs.85).aspx https://msdn.microsoft.com/en-us/library/windows/desktop/ff521657(v=vs.85).aspx

从那里进入“文件类型和文件关联”,子菜单涵盖您需要的所有内容(以及更多)。

请记住写入 HKCU\Software\Classes。似乎当 HKEY_CLASSES_ROOT (HKCR) 在文档中编写时,它通常只是引用 (HKCU|HKLM)\Software\Classes 的便捷方式。

关于“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths”或“HKEY_CLASSES_ROOT\Applications”:

MS 文档解释了它们与您已使用的密钥的关系。 (我仍在思考这个问题,所以无法提供更直接的解释。)

有些地方似乎说“App Paths”是首选,但实际上您可能需要同时使用两者,因为“App Paths”实际上只是关于paths,以及诸如此类的事情支持的类型 and 友好的应用程序名称仅位于“HK(LM|CU)\Classes\Applications”中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 文件关联是否正确完成? 的相关文章

  • Pip 无法在 Windows 上安装 Twisted

    我正在尝试在 Windows 8 计算机上安装 Twisted 在 Twisted 官方网站上 只有一个 Windows 版的 Wheel 文件 https twistedmatrix com trac wiki Downloads htt
  • MinGW Make 抛出“系统找不到指定的路径。”错误

    我正在尝试在 Windows 7 上使用 cmake 生成一个 c 项目 在实际创建项目之前 cmake 会对您的工具链进行快速测试 我正在使用 MinGW 这就是我的问题所在 Cmake 触发 make 构建 最终失败并返回 系统找不到指
  • 如何在Windows 8上正确使用SCardGetStatusChange?

    智能卡服务在 Windows 8 上的行为有所不同 并且 MSDN 尚未更新其文档 任何人都可以提供有关如何正确调用 SCardGetStatusChange 来监视 Windows 8 上的智能卡操作的代码片段吗 提前致谢 这是我为个人博
  • 将 gnuplot 嵌入现有 QtWidget 中

    我正在用 C 创建一个 伪 实时绘图应用程序 使用 gnuplot 作为绘图后端 我的要求之一是绘图必须位于现有窗口内 而不是有一个单独的绘图窗口 gnuplot 默认为 Gnuplot 有一个选项可以指定 Qt 小部件 ID 这似乎适合我
  • 将文件夹中的所有文件及其所有子文件夹移动到一个大文件夹中 - windows xp

    我有一个文件夹 c downloads ffme 里面有很多子文件夹 每个子文件夹中都有不同数量的文件 我想将所有这些单独的文件合并到一个大文件夹中 同时将它们从子文件夹中删除 我希望最终得到一个包含大量文件的文件夹 但没有子文件夹 我怎样
  • 我无法让 ruby​​ 开发工具包适用于 Windows XP

    所以 我一生都无法让它正常工作 我的最终目标是安装 dbd odbc gem 并使其正常工作 从我读过的多篇文章来看 我需要安装ODBC 绑定 http www ch werner de rubyodbc 对于 ruby 以及 dbd od
  • 提取证书中主题属性的所有值

    我目前正在使用CertGetNameString http msdn microsoft com en us library windows desktop aa376086 28v vs 85 29 aspx提取每个主题属性的值 如下所示
  • 无法启动 Windows 服务,错误 1064

    我编写了一个在 Win10 上运行的 Windows 服务 它运行得非常好 直到我决定对其进行一些更改 我重写了一些逻辑 在调试和发布配置中进行了测试 一切都很好 然后 我使用卸载了当前版本的服务installutil exe u serv
  • Wix - 自定义安装目录

    我使用的是 Wix 3 x 用户应该能够选择目标目录 我的Setup wxs目前是这样的 http pastebin com uH1EjbDQ http pastebin com uH1EjbDQ 询问用户自定义目标目录的最简单方法是什么
  • 在运行时,我如何判断我是否在 WinXP+ 上? win32

    我正在进行一些 win32 字符串 API 调用 并假设字符串以宽字符串形式出现 这在 XP 和更高版本上有效 我该如何断言这一点 这是运行时检查还是编译时检查 我做错了吗 这是一个例子 typedef std basic string
  • 为什么 fopen 无法打开已存在的文件?

    我在 Windows XP 上使用 Visual Studio 6 是的 我知道它很旧 构建 维护 C DLL 我遇到了 fopen 无法打开现有文件的问题 它总是返回 NULL 我试过了 通过将 errno 和 doserrno 设置为零
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • Node.js 升级在 Windows 中仍然显示旧版本

    我已使用 msi 安装程序下载并安装了新版本的 nodejs 4 1 2 之后我跑了node v 但它仍然显示旧版本 0 12 2 我尝试重新启动Windows 甚至卸载nodejs并重新安装它 但仍然显示相同的内容 为什么会发生这种情况
  • Visual C++ 找不到“Windows 类型”,如 PVOID、DWORD、ULONG 等

    Windows 似乎无法找到任何这些类型 我完全不知道该怎么办 我在 MSDN 上找到的东西似乎表明它们是默认包含的 但它们在 Native 程序或 CLR 程序中不起作用 我收到的具体错误是
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • 如何使用 ruby​​ 和命令行工具在 mavericks 中正确安装 cocoapod?

    这是我的设置 小牛队10 9 1 Xcode 5 0 2 哪个红宝石返回这个 Users quique123 rvm rubies ruby 1 9 3 p194 bin ruby 但 dvm install ruby 返回 Already
  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • 什么是 SO_SNDBUF 和 SO_RCVBUF

    你能解释一下到底是什么吗SO SNDBUF and SO RCVBUF选项 好的 出于某种原因 操作系统缓冲传出 传入数据 但我想澄清这个主题 他们的角色 通 常 是什么 它们是每个套接字的缓冲区吗 传输层的缓冲区 例如 TCP 缓冲区 和
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • 在 Windows 上查找父进程 ID

    Problem 给定远程 Windows 主机上的进程 ID 和命令行访问权限 如何找到其父进程的 PID Solution 鉴于 Marc B 的回答 我们可以使用 WMIC 命令示例here https learn microsoft

随机推荐

  • Avalon 中的大写编辑

    我正在使用 AvalonEdit 编写电影脚本编辑器 我扩展了 DocumentLine 类以具有 Type 属性 其值表示 字符 对话行 等 我希望脚本中某种类型的文档行以大写形式编写 例如字符名称 渲染管道中是否有一个扩展点可以让我获取
  • 如何在 zend Framework 2 中返回对象数组?

    我正在 zf2 中进行查询 然后得到一个object Zend Db ResultSet HydratingResultSet 我必须foreach上 以便到达属性 我想默认获得一个对象数组 这是我的一些代码 factory address
  • clang 不编译我的代码,但 g++ 可以

    有人可以帮我解决这个代码吗 include
  • NodeJS 中的 HTTPS 请求

    我正在尝试编写一个 NodeJS 应用程序 它将使用 https 包中的请求方法与 OpenShift REST API 进行通信 这是代码 var https require https var options host openshif
  • 使用 ggforce 创建跳过节点的 Sankey 图

    I would like to use the ggforce package in R to create a Sankey diagram because I prefer the look of the parallel sets p
  • Vertx FileUpload上传不带扩展名的文件

    我在用vertx web并尝试上传文件 这是我的代码 router route handler BodyHandler create setUploadsDirectory some path uploads router post api
  • pandas 计算两个零之间不为零的值的数量

    我有以下数据框 0 0 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 你如何获得一个看起来像这样的数据框 0 0 0 4 0 0 4 3 0 4 3 2 4 3 2 0 0 0 0 2
  • 将tiny int 转换为int 时出错

    该错误看起来是由于在服务器上安装框架 4 5 引起的 尽管该项目的目标仍然是 4 0 4 5 取代了 CLR 看起来它在将tinyint 类型的对象拆箱为 int 方面发生了变化 这在 4 0 中可以工作 但安装 4 5 后就不行了 请在回
  • PHP72 MongoDB 驱动程序与 OSX 上的 Homebrew

    我有一个问题可能表明我对 Homebrew 与 MongoDB 存在误解 我正在 Mac OSX 10 12 6 Sierra 上运行带有 PHP 7 2 1 我想使用 的 XAMPP 版本 我安装了 MongoDB 并创建了配置和数据存储
  • Apache HttpClient 4.3 SocketConfig.getSoTimeout() 与 RequestConfig.getSocketTimeout()

    当建造一个CloseableHttpClient在 Apache HttpClient 4 3 中 我可以使用 SocketConfig custom setSoTimeout soTimeout build 并将其发送至setDefaul
  • 计算变换球体的 AABB

    我有一个在对象空间中由中心点和半径表示的球体 使用可能包括缩放 旋转和平移的变换矩阵将球体变换为世界空间 我需要为世界空间中的球体构建一个轴对齐的边界框 但我不知道该怎么做 这是我目前的方法 适用于某些情况 public void comp
  • Ruby Savon Gem 更改日志记录配置

    我尝试在针对 WSDL 运行 Savon 时更改其日志记录 但更改日志记录级别未成功 我阅读了文档 http rubiii github com savon global configuration http rubiii github c
  • 如果使用相同的数组作为两个参数,strcat() 会崩溃

    char r 40 strcpy r abcdef strcat r r 我的程序在第三行崩溃了 替换 strcat r r 通过 strcat r abcdef 不过工作正常 这是为什么 根据strcat 3 http linux die
  • Django 管理模板覆盖不起作用

    姜戈 1 6 11 应用程序结构如下所示 my project new app templates 在我的配置中 TEMPLATE ROOT os path join BASE ROOT templates TEMPLATE DIRS TE
  • 匹配枚举引用的语法是什么?

    似乎 Rust 的每一份介绍性文档枚举类型 https doc rust lang org book first edition enums html解释如何match https doc rust lang org book first
  • 如何将S3中的10,000个文件公开

    我的存储桶中有一个文件夹 其中包含 10 000 个文件 似乎没有办法立即上传并公开它们 所以我把它们全部上传了 它们是私人的 我需要将它们全部公开 我尝试过 aws 控制台 它只是给出一个错误 对于文件较少的文件夹工作正常 我尝试过在 F
  • 如何从您的脚本执行另一个 python 脚本并能够进行调试?

    您有包装器 python 脚本正在调用另一个 python 脚本 当前正在使用os system python another py some params 您希望能够调试这两个脚本 并且如果您使用os system 您将丢失调试器 因此使
  • C 扩展中 IO 有界线程的 GIL (HDF5)

    我有一个采样应用程序 它获取250 000每秒采样 将它们缓冲在内存中并最终附加到HDFStore由 提供pandas 总的来说 这很棒 但是 我有一个线程运行并不断清空数据采集设备 DAQ 并且它需要定期运行 大约一秒的偏差往往会破坏东西
  • React Native嵌套ListView在加载时多次触发onEndReached

    这是代码
  • Windows 文件关联是否正确完成?

    我想将我的应用程序设置为在 Windows 中具有文件关联 额外的复杂性 文件扩展名可能与其他一些不相关的应用程序冲突 处理这种情况的最佳方法是什么 用户很可能不会同时拥有这两者 但如果两者兼得 最好的处理方式是什么 我一直在网上搜索 st