我正在开发一个需要写入注册表的应用程序.它在XP上工作正常,但是当我在Vista上运行它时,从Visual Studio中,我得到一个安全性异常:
Registry.LocalMachine.OpenSubKey("SOFTWARE",true);
我正在尝试将新密钥写入注册表的该分支.
这样做的正确方法是什么,首先是我可以在Vista上运行VS的应用程序,其次是让我的用户不会遇到在Vista上运行的问题.
谢谢...
在XP和Vista上,您需要Admin权限才能在LocalMachine下编写新密钥.
由于帐户默认设置不同,你会发现它在XP上运行并在Vista上失败.
快速而肮脏的解决方案是确保您的应用程序在两种情况下都使用管理员权限运行,但在Vista中,这往往是不受欢迎的.
更好的解决方案是稍微重新设计一下 - 新的子密钥可以由安装程序(使用管理员权限运行)编写,还是可以将您的信息存储在其他地方?
标准用户和在Vista上使用UAC运行的管理员无权编写本地计算机注册表项.如果您以标准用户身份运行,那么在XP上也会失败.
你的选择是:
如果设置是按用户,请使用Registry.CurrentUser.
以管理员身份运行您的应用
松开密钥上的ACL,这样任何人都可以写 - 这绝对不是推荐的,因为盒子上的任何恶意软件都可以密钥.