这是我从注册表获取值的代码,当我直接从 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;
当您从 Visual Studio 运行时,通常会在您的帐户(通常是管理员帐户)下运行它。您将拥有对整个注册表的完全读/写访问权限。所以您可能已经毫无问题地创建了密钥。
当您在 IIS 下运行时,您很可能在特定的应用程序池帐户下运行。 该帐户大多具有注册表的只读权限,但没有写入权限。因此,您只需确保密钥存在即可将其作为应用程序池帐户读取。
为了验证,请尝试使用应用程序池帐户写入密钥。如果您没有遇到访问异常,您应该能够读取它。
如果没有,您需要授予写入权限(如果您的应用程序正在写入密钥)或确保该密钥存在于注册表中该用户下。