在作为服务运行的VB.NET应用程序中,当我使用Registry.CurrentUser.OpenSubKey()时,我得到的值为“Nothing”。当应用程序在桌面模式下运行时,相同的代码会正确执行。我对VB.NET并不多,不幸的是,这不是我的代码。
代码:
Dim regURL As String = "Software\MyCompany\" + _
System.Reflection.Assembly.GetCallingAssembly.GetName.Name + _
"\Settings"
regKey = My.Computer.Registry.CurrentUser.OpenSubKey(regURL, True)
服务使用时regKey
为Nothing
。桌面返回一个有效的注册表项对象,我觉得验证URL。我正在使用CurrentUser的任何想法,因为在Windows Server 2008上运行时此代码不能与LocalMachine一起使用。
提前致谢,
克雷格
答案 0 :(得分:1)
要使其成为有效测试,您必须确保在安装时配置您的服务,以便与用于桌面测试的帐户相同。它们是一样的吗?
如果没有,注册表值会有所不同,因为CurrentUser
是用户特定信息的别名 - 对每个用户来说都不一样。
如果它们不匹配,您应该可以通过AdminstrativeTools更改服务设置来重新测试 - >服务 - 右键单击您的服务并选择“属性”,然后通过“登录”选项卡更改服务帐户。