为用户安装的应用的 Windows URI 方案

Windows URI Scheme for app installed for a user

提问人:Andy 提问时间:9/5/2023 更新时间:9/7/2023 访问量:33

问:

我有一个桌面 .net WinForms 应用程序,可以为每个人或当前用户安装。 安装程序还会将应用注册为 HKCR 中的 URI 方案。 这对所有用户都按预期工作,但对于登录用户,它将因注册表权限而失败。

我可以完成这项工作并为给定用户注册该应用程序,但是当同一台机器上的两个人安装它时,问题就出现了。

以前有没有人遇到过这个问题,有没有一种优雅的方法可以解决它? 最简单的方法是为每个人安装该应用程序,但我们必须仅为登录用户提供安装选项。

我已经搜索过,并且正在努力寻找任何信息,如果每个用户都有一个条目。 一种解决方案是创建一个为所有人安装的启动器应用程序,然后调用可以检查它是否存在于登录用户或所有人的启动器应用程序。

WinForms Windows-Installer URL 方案

评论

0赞 Peter 9/5/2023
HKCR 根据定义是 HKey Current useR ,不完全确定您正在设置什么,通常用户 X 可能不会为用户 Y 设置注册表设置,这将是安全漏洞。通常,安装程序帐户像管理员一样使用。如果您没有设置那么多设置,可以在 user\appdata 文件位置使用 json config 左右。
0赞 Rob Mensching 9/6/2023
不,HKCR HKEY_CLASSES_ROOT。HKCU HKEY_CURRENT_USER也称为每用户配置单元。HKCR 是一个奇怪的键,它合并了每台机器和每个用户的视图。@Andy描述的问题有点神秘,但由于缺少安装细节,因此没有足够的信息可以确定。
0赞 Andy 9/6/2023
@RobMensching 感谢您的评论。我试图写入用户无权访问HKEY_CLASSES_ROOT。我不知道HKEY_CLASSES_ROOT是从HKEY_CURRENT_USER\Software\Classes\中提取的。因此,在为用户安装时将我的调用重定向到 HKEY_CURRENT_USER\Software\Classes\<AppName>,在管理员模式下将我的调用重定向到 HKEY_LOCAL_MACHINE\Software\Classes\ 可以解决问题。
0赞 Rob Mensching 9/7/2023
这就解释了这一点。我留下了一个答案,现在很清楚你在做什么。:)

答:

0赞 Rob Mensching 9/7/2023 #1

HKCR(HKEY_CLASSES_ROOT) 是一个特殊的根,它将每台计算机和每个用户合并到一个视图中。阅读工作无缝衔接。但是,如果要控制是写入每台计算机的密钥还是每用户的密钥,请使用“实际”注册表路径。HKEY_LOCAL_MACHINE\Software\ClassesHKEY_CURRENT_USER\Software\Classes