从ASP.NET中的注册表中读取

时间:2010-04-28 12:21:28

标签: c# asp.net

我有一个库(DLL),其中包含以下方法:

var masterKey =      
    Registry.
    LocalMachine.
    OpenSubKey("SOFTWARE\\Microsoft\\Dynamics\\5.0\\");

在WinForms应用程序中运行此方法时,masterKey不为null,并且在asp.net中运行时 masterKey为空

我用WindowsIdentity.GetCurrent().Name检查了执行用户,并且同一个用户正在执行这两个应用程序。 asp.net应用程序在visual studio中执行(debug:F5),WinForms应用程序也是如此。

  

为什么我无法读取密钥   asp.net?

修改

我已将权限设置为none,这给了我“拒绝访问”。当我添加用户组时,我得到null。这意味着我可以折叠结构并看到它存在,但我无法访问键/被委托。

我已连接到域,但是这不应该影响我的本地IIS实例,是吗?

2 个答案:

答案 0 :(得分:1)

来自this MSDN page(这是关于加密,但这不是重点):

  

默认情况下,Web应用程序使用的ASP.NET进程标识将无法访问注册表。需要明确授予访问权限。

This ASP.NET forums post描述了如何设置权限(在本例中为事件日志):

  

右键单击[相关]键并选择...权限...

     

将运行asp.net的帐户添加到列表中。选择帐户并确保选择了读取和写入。

答案 1 :(得分:1)

尝试授予网络服务

http://msdn.microsoft.com/en-us/library/ms998320.aspx

网络服务帐户没有对注册表的写入权限。如果您的应用程序需要写入注册表,则必须在所需的注册表项上配置必要的访问控制列表(ACL)。