注册表大问题,小弟用asp.net+C# 写了一个从web写入注册表程序,为什么出现错误,说我没有权限,具体如下

时间:2022-04-02 15:31:13
private void Button1_Click(object sender, System.EventArgs e)
    {
      RegistryKey hklm=Registry.LocalMachine;
      RegistryKey software1=hklm.OpenSubKey("SOFTWARE");
      RegistryKey microsoft1=software1.OpenSubKey("Microsoft");
      RegistryKey windows1=microsoft1.OpenSubKey("Windows");
      RegistryKey currentversion1=windows1.OpenSubKey("CurrentVersion");
      RegistryKey run1=currentversion1.OpenSubKey("Run");
      RegistryKey ddd=run1.CreateSubKey("ddddd");
      ddd.SetValue("www","1234");
      foreach ( string sValName in run1.GetValueNames ( ) )
        //开始遍历由指定子键拥有的键值名称组成的字符串数组
      {
      Response.Write("" + sValName + ": " + run1.GetValue(sValName));
      Response.Write("<br>");
        //在列表中加入键名称和对应的键值
      }
    }


-------------------错误信息-----------------------------

“/WebApplication1”应用程序中的服务器错误。
--------------------------------------------------------------------------------

无法写入到注册表项。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.UnauthorizedAccessException: 无法写入到注册表项。 

ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。 

若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。

源错误: 


行 55:       RegistryKey currentversion1=windows1.OpenSubKey("CurrentVersion");
行 56:       RegistryKey run1=currentversion1.OpenSubKey("Run");
行 57:       RegistryKey ddd=run1.CreateSubKey("ddddd");
行 58:       ddd.SetValue("www","1234");
行 59:       foreach ( string sValName in run1.GetValueNames ( ) )
 

源文件: h:\net专区\asp.net-c#\webapplication1\webform1.aspx.cs    行: 57 

堆栈跟踪: 

17 个解决方案

#1


web默认是匿名访问的.
参考

http://www.microsoft.com/china/technet/security/guidance/secmod38.mspx

#2


帮你顶一下

#3


因为你本来就没有权限

#4


web默认是匿名访问的.

#5


aspx这个用户应该没有这些权限。如果一定要这样,就在config中启动模拟用户。

#6


直接修改web.config即可:
<system.web>
   <identity impersonate="true" userName = "administrator" password="1234"></identity>
....
</system.web>

#7


machine.config
<processmodel ... user=youradmin , password = adminpwd >

香水,,我接分喽。。。

#8


to: net_lover(孟子E章)
能不能跳过密码,访问写入注册表的呀

#9


大哥,
两种方法试了都不行呀,还是无法写入注册表呀,还是说我没有权限
<system.web>
   <identity impersonate="true" userName = "administrator" password="1234"></identity>
....
</system.web>



machine.config
<processmodel ... user=youradmin , password = adminpwd >

#10


应该是给iusr赋予这个权限吧

#11


你在ISS里面给IISUSER赋于管理员的权限!

#12


讨厌!讨厌!

#13


开始-运行 regedit,打开注册表编辑器,
在你想要编辑的节点上右击-权限,添加相应的用户并赋予读写权限

注:win2003下asp.net默认的用户是network service
其它为asp_net(印象当中是^_^)

#14


给aspnet用户添加权限

#15


在Win200的Regedit里不能修改注册表项的权限,你需要运行X:\winnt\system32\regedt.exe来修改权限!!~~~~

#16


各位大侠,那可以修改其它电脑的注册表文件,那要怎么做呢!!!单纯只是技术要求+++

#17


http://www.cnblogs.com/edobnet/archive/2004/06/10/14666.aspx

#1


web默认是匿名访问的.
参考

http://www.microsoft.com/china/technet/security/guidance/secmod38.mspx

#2


帮你顶一下

#3


因为你本来就没有权限

#4


web默认是匿名访问的.

#5


aspx这个用户应该没有这些权限。如果一定要这样,就在config中启动模拟用户。

#6


直接修改web.config即可:
<system.web>
   <identity impersonate="true" userName = "administrator" password="1234"></identity>
....
</system.web>

#7


machine.config
<processmodel ... user=youradmin , password = adminpwd >

香水,,我接分喽。。。

#8


to: net_lover(孟子E章)
能不能跳过密码,访问写入注册表的呀

#9


大哥,
两种方法试了都不行呀,还是无法写入注册表呀,还是说我没有权限
<system.web>
   <identity impersonate="true" userName = "administrator" password="1234"></identity>
....
</system.web>



machine.config
<processmodel ... user=youradmin , password = adminpwd >

#10


应该是给iusr赋予这个权限吧

#11


你在ISS里面给IISUSER赋于管理员的权限!

#12


讨厌!讨厌!

#13


开始-运行 regedit,打开注册表编辑器,
在你想要编辑的节点上右击-权限,添加相应的用户并赋予读写权限

注:win2003下asp.net默认的用户是network service
其它为asp_net(印象当中是^_^)

#14


给aspnet用户添加权限

#15


在Win200的Regedit里不能修改注册表项的权限,你需要运行X:\winnt\system32\regedt.exe来修改权限!!~~~~

#16


各位大侠,那可以修改其它电脑的注册表文件,那要怎么做呢!!!单纯只是技术要求+++

#17


http://www.cnblogs.com/edobnet/archive/2004/06/10/14666.aspx