获取值注册表在 IIS 上运行时不工作,但从 Visual Studio 运行时工作

问题描述 投票:0回答:1

这是我从注册表获取值的代码,当我直接从 Visual Studio 运行时,它工作正常,但当我从 IIS 运行时,该值始终为空。

        RegistryKey rk = Registry.CurrentUser.OpenSubKey(
   @"Software\Indomaret\POS\Database",
    false); //writable - this will fail without proper access
        string sDefault = rk.GetValue("Server").ToString();

        ASPxButton1.Text = sDefault;
c# asp.net visual-studio-2010 visual-studio-2012 iis
1个回答
0
投票

当您从 Visual Studio 运行时,通常会在您的帐户(通常是管理员帐户)下运行它。您将拥有对整个注册表的完全读/写访问权限。所以您可能已经毫无问题地创建了密钥。

当您在 IIS 下运行时,您很可能在特定的应用程序池帐户下运行。 该帐户大多具有注册表的只读权限,但没有写入权限。因此,您只需确保密钥存在即可将其作为应用程序池帐户读取。

为了验证,请尝试使用应用程序池帐户写入密钥。如果您没有遇到访问异常,您应该能够读取它。

如果没有,您需要授予写入权限(如果您的应用程序正在写入密钥)或确保该密钥存在于注册表中该用户下。

© www.soinside.com 2019 - 2024. All rights reserved.