2011-01-14 22 views
0

を投げる:asp.netサイト私は今、それがこの例外を投げ、私はWindowsの更新プログラムの束をインストールしたときに最後の夜まで、私のサーバー上の罰金働いていたASP.NETアプリケーションを持っているSystem.Security.SecurityException

System.Security.SecurityException: Requested registry access is not allowed. 

残念ながら、これを難しくするいくつかのことがあります。 web.configファイルにdebug = "true"属性を追加して、例外が発生した行を取得しました。私のコードで識別された行が終了する場合で、コードが直前に良性のようだ:私はタフな私を助けることができる

<body id="body" runat="server"> 
    <div class="conteneur-confirmation"> 
     <% 
     If Not Session("confirmation") Is Nothing Then 
      Response.Write("<ul><li>" & Session("confirmation") & "</li></ul>") 
      Session.Remove("confirmation") 
     End If 
     %> 
    </div> 
    <div class="conteneur-alerte"> 
     <% 
     If Not Session("Alerte") Is Nothing Then 
      Response.Write("<ul><li>" & Session("Alerte") & "</li></ul>") 
      Session.Remove("Alerte") 
     End If <!-- The exception is supposedly launch from here --> 
     %> 
<!-- more code --> 

次のことは、スタックトレースです。ここでは、次のとおりです。System.TimeZoneInfo.TryCompareTimeZoneInformationToRegistryは、レジストリとasp.netのアイデンティティ、IWAM_MACHINENAMEにアクセスしようとすると、それは例外のように見える

[SecurityException: Accès au registre demandé non autorisé.] 
    System.ThrowHelper.ThrowSecurityException(ExceptionResource resource) +52 
    Microsoft.Win32.RegistryKey.InternalOpenSubKey(String name, RegistryKeyPermissionCheck permissionCheck, Int32 rights) +9434757 
    Microsoft.Win32.RegistryKey.OpenSubKey(String name, RegistryKeyPermissionCheck permissionCheck, RegistryRights rights) +15 
    System.TimeZoneInfo.TryCompareTimeZoneInformationToRegistry(TimeZoneInformation timeZone, String id, Boolean& dstDisabled) +234 
    System.TimeZoneInfo.FindIdFromTimeZoneInformation(TimeZoneInformation timeZone, Boolean& dstDisabled) +258 
    System.TimeZoneInfo.GetLocalTimeZone() +307 
    System.TimeZoneInfo.get_Local() +116 
    System.DateTime.ToLocalTime() +60 
    System.IO.File.GetLastWriteTime(String path) +34 
    System.Web.Handlers.AssemblyResourceLoader.GetAssemblyInfoWithAssertInternal(Assembly assembly) +93 
    System.Web.Handlers.AssemblyResourceLoader.GetAssemblyInfo(Assembly assembly) +67 
    System.Web.Handlers.AssemblyResourceLoader.GetWebResourceUrlInternal(Assembly assembly, String resourceName, Boolean htmlEncoded, Boolean forSubstitution, IScriptManager scriptManager) +1159 
    System.Web.Handlers.AssemblyResourceLoader.GetWebResourceUrl(Type type, String resourceName, Boolean htmlEncoded, IScriptManager scriptManager) +722 
    System.Web.UI.ClientScriptManager.GetWebResourceUrl(Page owner, Type type, String resourceName, Boolean htmlEncoded, IScriptManager scriptManager) +167 
    System.Web.UI.ClientScriptManager.RenderWebFormsScript(HtmlTextWriter writer) +158 
    System.Web.UI.Page.RenderWebFormsScript(HtmlTextWriter writer) +58 
    System.Web.UI.Page.BeginFormRender(HtmlTextWriter writer, String formUniqueID) +8910479 
    System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +57 
    System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +31 
    System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) +53 
    System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27 
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100 
    System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer) +40 
    ASP.masters_sigiweb2_master.__Renderbody(HtmlTextWriter __w, Control parameterContainer) in C:\Inetpub\v3\Masters\sigiweb2.master:96 
    System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +109 
    System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8 
    System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +31 
    System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27 
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100 
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25 
    System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +208 
    System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8 
    System.Web.UI.Control.Render(HtmlTextWriter writer) +10 
    System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27 
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100 
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25 
    System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +208 
    System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8 
    System.Web.UI.Page.Render(HtmlTextWriter writer) +29 
    System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27 
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100 
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +8431 
    System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +253 
    System.Web.UI.Page.ProcessRequest() +78 
    System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21 
    System.Web.UI.Page.ProcessRequest(HttpContext context) +49 
    ASP.default_aspx.ProcessRequest(HttpContext context) +37 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +100 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75 

が起動され、権限を持っていません。私は、Windowsのアップデートの1つが、いくつかのレジストリキーまたはこの機能の動作を変更したと考えています。私は "TryCompareTimeZoneInformationToRegistry"のためにウェブ上で検索しました。他の誰かが私と同じエラーを抱えていると思っていました。しかし、Googleはこの機能に関連して2ページしか返していません。両方ともイタリア語で書かれています。

解決策は、単にレジストリの一部のアクセス権を変更することだと思いますが、私にはわからないし、Web上のこの機能に関する情報はほとんどないようです。 。

私のサーバーはフランス語版のWindows Server 2003であると付け加えたいと思います。インターネット上で私が見つけた唯一の他の情報がイタリア語であるという事実は、それがWindowsの英語版では発生しませんが、これは確認できません。

ありがとうございました。

答えて

1

レジストリキーHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\TimeZones\Bangladesh Standard Timeは、権限が間違って設定されています(ちょうど私が行ったばかりのWindows Updateによって問題が発生している可能性があります)。私は他のタイムゾーンキーから許可をコピーしました。それは誰にとっても大丈夫です。問題はなくなりました。

ここで、Googleがこの問題を抱えている人々を送信することを願っています。 Web上のTryCompareTimeZoneInformationToRegistry関数に関する情報をほとんど見つけられなかったのは奇妙なことでした。

-1

このページには、ウイルス対策ソフトウェアがレジストリへのアクセスをブロックしているためにこの問題が発生しているというメッセージが表示されます。それは始めるのに妥当な場所のように聞こえる。

+0

ご協力いただきありがとうございます。私はすでにアンチウィルスを無効にしようとしましたが、それは事を変えませんでした。私は管理者権限でasp.netプロセスを実行しようとしましたが、それはうまくいきました(私はそれが大きなセキュリティ上のリスクであることを知っています、私は本当にアクセス権の問題であるという私の仮説をテストしていました)。 –

+0

この時点で、私の手を捨てて、「Process Monitorを置く」と言ってください。 PMは本質的には "フルボディスキャン"で、データのヒープを調べることができますが、エラーの原因となるレジストリアクセスの特定の拒否になります。それはあなたにもう少し情報を与えるかもしれません...あなたのプロセスが持っているアイデンティティはあなたが何らかの理由で考えるものではない可能性があります。プロセスモニタはhttp://technet.microsoft.com/en-us/sysinternals/bb896645にあります。 –

+0

私はプロセスモニターについて知りませんでした。それは私のデバッグの武器のもう一つの強力なツールになるようです。私はHKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ TimeZones \ Bangladesh Standard Timeの自動化がプロセスがアクセスできないキーであることを知りました。Everyoneがそうしなければならない間、管理者だけが権利を持っていたことが分かります(すべてのタイムゾーンキーの場合と同様です)。 –

関連する問題