我正在努力使我的产品在Windows 7上无缝运行。问题是,有一小部分全局(非用户特定的)应用程序设置所有用户都应该能够更改。< /强>
在以前的版本中,我使用HKLM\Software\__Company__\__Product__
来实现此目的。这允许高级用户和管理员修改注册表项,一切正常。现在,Windows Vista和Windows 7具有此UAC功能,默认情况下,即使是管理员也无法在没有提升的情况下访问密钥进行写入。
愚蠢的解决方案当然意味着将requireAdministrator
选项添加到应用程序清单中。但这实际上是不专业的,因为产品本身与管理相关的任务非常远。所以我需要留在asInvoker
。
另一种解决方案可能意味着在需要对注册表项进行写入访问的瞬间程序化提升。更不用说我不知道如何实现它的事实,它也很尴尬。它干扰了正常的用户体验,以至于我几乎不认为它是一种选择。
我所知道的应该是相对容易实现的是在安装期间添加对指定注册表项的写入权限。我为此创建了一个separate question。这也非常类似于访问用于存储设置的共享文件。
我的感觉是必须有一种方法来实现我所需要的,以一种安全,直接和与所有操作系统兼容的方式。有什么想法吗?
答案 0 :(得分:0)
你必须在注册表中拥有它吗?如果没有,请将其放入一个简单的文件中,每个人都可写。写给HKLM需要额外的特权,这是有充分理由的。
答案 1 :(得分:0)
我是新来的(否则我会留下评论)而且我不是Windows大师,但是......
imho前提是错误的:如果非提升用户无法修改所有用户读取的注册表项或目录(例如默认情况下为Users \ Public),则有一个原因
我认为允许任何用户修改一小组全局应用程序设置可能会破坏其他用户的体验,而这些用户并不期望他们的设置被修改
另一方面,我不知道你的用例...您能说明为什么所有用户都应该能够修改这些设置吗? 如果确实所有用户都必须能够这样做...为什么你不能让这些设置用户特定?