2011-01-14 6 views
0

어젯밤에 Windows 업데이트를 설치할 때까지 내 서버에서 제대로 작동하는 ASP.NET 응용 프로그램이 있습니다. 이제이 예외가 throw됩니다.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 업데이트 중 하나에서 일부 레지스트리 키 또는이 함수의 동작이 변경된 것 같습니다. 나는 웹에서 "TryCompareTimeZoneInformationToRegistry"에 대한 검색을 수행하여 나에게도 동일한 오류가있는 다른 사람을 찾을 것이라고 생각했습니다. 그러나 Google은이 기능과 관련하여 두 페이지 만 반환하며 둘 다 이탈리아어로되어 있습니다.

해결책은 레지스트리의 일부에 대한 액세스 권한을 변경하는 것일뿐입니다. 그러나 나는이 기능에 대한 정보가 실제로 웹상에 없다고 생각합니다. .

나는 내 서버가 프랑스어 버전의 Windows Server 2003이라는 것을 추가하고 싶습니다. 인터넷에서 발견 된 유일한 기타 정보는 이탈리아어로되어있어 문제가 될 수 있습니다. 영어 버전의 Windows에서는 발생하지 않지만이를 확인할 수는 없습니다.

도움 주셔서 감사합니다.

답변

1

레지스트리 키 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\TimeZones\Bangladesh Standard Time의 권한이 잘못 설정되었습니다 (방금 완료 한 Windows Update에 의한 문제 일 가능성이 높음). 나는 단순히 다른 모든 시간대 키의 허가를 복사했는데, 모든 사람이 모두 괜찮 았고 문제는 사라졌습니다.

이제 Google에서이 문제가있는 사람들을 Google에 보내주기를 바랍니다. 웹에서 TryCompareTimeZoneInformationToRegistry 함수에 대한 정보를 거의 찾지 못한 것은 이상한 일이었습니다.

-1

이 페이지는이 문제가 바이러스 백신 소프트웨어가 레지스트리에 대한 액세스를 차단함으로써 발생한다고 설명합니다. 그것은 합리적인 출발점처럼 들립니다.

+0

도움 주셔서 감사합니다. 이미 바이러스 백신을 사용하지 않으려 고 시도했지만 아무 것도 변경하지 않았습니다. 또한 관리자 권한으로 asp.net 프로세스를 실행하려고 시도했는데 효과적이었습니다 (큰 보안 위험이 있다는 것을 알고 있었고 실제로 액세스 권한 문제라는 가설을 테스트하고있었습니다.) –

+0

이 시점에서 필자는 내 손을 위로 던져서 "프로세스 모니터 넣기"라고 말하십시오. PM은 본질적으로 "전신 스캔"으로, 데이터를 훑어 볼 수있는 힙을 줄 것이지만 오류가 발생하는 레지스트리 액세스를 거부 할 수 있습니다. 그건 좀 더 많은 정보를 줄 수 있습니다 ... 당신의 프로세스가 가지고있는 정체성이 당신이 어떤 이유로 생각하지 않을 수도 있습니다. 프로세스 모니터는 http://technet.microsoft.com/en-us/sysinternals/bb896645에서 확인할 수 있습니다. –

+0

프로세스 모니터에 대해 알지 못했습니다. 그것은 디버깅 도구 모음에서 또 다른 강력한 도구가 될 것 같습니다. 그걸로 나는 HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ TimeZones \ Bangladesh 표준 시간에 대한 자동 화가 프로세스가 액세스 할 수없는 열쇠임을 알게되었습니다.Everyone은 (모든 시간대 키의 경우와 마찬가지로) 관리자가 권한을 가지고있는 동안에 만 관리자에게 권한이 있음이 드러납니다. –

관련 문제