Nav*_*eet 2 vb.net windows vb6 registry regedit
我创建了一个小的vb6应用程序,用于编辑HKLM配置单元中的注册表.它使用函数RegSetValueEx.但是当在Windows 7和Windows 8 pc中运行exe文件时,即使在管理员用户中运行它也不会编辑注册表.
在Windows XP中它工作正常.如果我运行相同的应用程序作为"以管理员身份运行"(通过右键单击exe然后运行为)在Windows 7和8中然后它正常工作.我认为Windows 7和8 id设计为像这只是.但有没有任何方法可以编辑它而无需以管理员身份运行?或者vb6中是否有相同的代码.
这是我的小代码
重要: 检查代码时创建exe然后运行exe并单击按钮(在wow32节点中添加HKEY_LOCAL_MACHINE\SOFTWARE\Demo注册表,因为vb6是32位应用程序).通过打开代码直接运行代码允许注册表更改.但是创建exe然后运行它会产生问题,这是任何应用程序中的实时场景.
自Windows 2000以来,Microsoft一直警告开发人员不应该像普通用户那样访问注册表的HKLM分支,因为它迟早会被限制在管理员之外.他们还说你不应该写信Program Files
.
他们在Windows Vista之前没有执行该规则,所以没有人觉得有必要改变任何东西.
现在你拥有它:不要像普通用户那样写入HKLM - 它不起作用.不要写你的设置Program Files
.它不起作用.
普通用户运行的应用程序可能会将其数据写入注册表中的用户文件夹和用户配置单元,而不是其他地方.
如果您的应用程序的唯一目的是在HKLM配置单元中写入该值,那么您将需要向可执行文件添加"requiresAdministrator"清单,从而导致Windows在每次运行时提示用户输入管理员权限.
如果这是较大项目的一小部分,那么您应该使用COM提升或只使用上面的清单运行一个小的存根可执行文件,允许窗口仅在需要时提示.
如果您的应用程序根本不需要管理员访问权限,那么您应该停止尝试写入管理员限制位置,而是使用用户自己的HKCU配置单元.