Warm tip: This article is reproduced from serverfault.com, please click

console-OpenSubKey在VB.NET中返回null

(console - OpenSubKey returns null in VB.NET)

发布于 2012-07-11 06:57:45

我有一个控制台程序,该程序读取HKCU下的注册表项:

OpenSubKey("Software\\Autodesk\\AutoCAD")

该程序工作得很好,但是当我尝试Custom Action在安装项目中使用它时,它返回了一个null值。

这里有一些建议:

  1. 关闭UAC(用户帐户控制)将解决此问题。
  2. 如果我可以通过双击运行此控制台,即使打开了UAC,它也可以正常工作。
Questioner
Mostafa abdo
Viewed
0
Damien_The_Unbeliever 2012-07-11 15:22:36

如果返回null而不是引发异常,则不是权限问题-密钥不存在。OpenSubKey

如果找不到指定的子项,则返回null。

(并且,请注意上面列出的异常):

SecurityException 用户没有读取注册表项所需的权限。

因此,可能的问题是,当你的操作由Windows Installer服务运行时,将在安装顺序中对其进行调用-该服务在本地系统帐户下运行,而不是在已登录用户的帐户下运行。


不知道你要使用此密钥要实现什么,所以我不确定建议什么解决方法。可能是你可以使用MSI系统中内置的标准设施来实现你的目标-或者你可能希望将此操作推迟到程序真正第一次运行时进行。

(MSI内部可能的功能可能会有所不同,具体取决于你所使用的构建方式-如果你当前正在使用VS安装项目,则将受到很大限制)