2014-07-17 77 views
0

這是我的代碼從REGISTRY getvalue,當我直接從Visual Studio運行它的工作正常,但是當我從IIS運行的值始終爲空。獲取價值註冊表不工作時,在IIS上運行,但從Visual Studio運行時工作

 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; 
+0

IIS將在服務或AppPool帳戶下運行,很可能不會有Software \ IndoMaret密鑰。如果您將ApplicationPool配置爲使用您的帳戶運行,它是否工作? – jessehouwing

+0

@ jessehouwing如何配置它我不明白對不起,我是新手..:D – AKCode

+0

請參閱:http://www.iis.net/learn/manage/configuring-security/application-pool-identities – jessehouwing

回答

0

從Visual Studio運行時,通常在您的帳戶(通常是管理員帳戶)下運行它。您將擁有對整個註冊表的完整讀/寫訪問權限。所以你可能已經創建了鑰匙而沒有任何打嗝。

當您在IIS下運行時,您很可能在特定的APP池帳戶下運行。 此帳戶將主要具有對註冊表的只讀權限,但不具有寫入權限。所以你只需要確保你存在的關鍵是把它作爲一個應用程序池賬戶讀取。

爲了驗證,請嘗試使用應用程序池帳戶編寫密鑰。如果你沒有得到訪問異常,你應該可以閱讀它。

如果不是,則需要給予寫入權限(如果您的應用程序是寫入密鑰的內容)或確保在註冊表中的該用戶下存在密鑰。

+0

如何配置它我不明白對不起,我是新手..:D – AKCode

相關問題