어젯밤에 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에서는 발생하지 않지만이를 확인할 수는 없습니다.
도움 주셔서 감사합니다.
도움 주셔서 감사합니다. 이미 바이러스 백신을 사용하지 않으려 고 시도했지만 아무 것도 변경하지 않았습니다. 또한 관리자 권한으로 asp.net 프로세스를 실행하려고 시도했는데 효과적이었습니다 (큰 보안 위험이 있다는 것을 알고 있었고 실제로 액세스 권한 문제라는 가설을 테스트하고있었습니다.) –
이 시점에서 필자는 내 손을 위로 던져서 "프로세스 모니터 넣기"라고 말하십시오. PM은 본질적으로 "전신 스캔"으로, 데이터를 훑어 볼 수있는 힙을 줄 것이지만 오류가 발생하는 레지스트리 액세스를 거부 할 수 있습니다. 그건 좀 더 많은 정보를 줄 수 있습니다 ... 당신의 프로세스가 가지고있는 정체성이 당신이 어떤 이유로 생각하지 않을 수도 있습니다. 프로세스 모니터는 http://technet.microsoft.com/en-us/sysinternals/bb896645에서 확인할 수 있습니다. –
프로세스 모니터에 대해 알지 못했습니다. 그것은 디버깅 도구 모음에서 또 다른 강력한 도구가 될 것 같습니다. 그걸로 나는 HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ TimeZones \ Bangladesh 표준 시간에 대한 자동 화가 프로세스가 액세스 할 수없는 열쇠임을 알게되었습니다.Everyone은 (모든 시간대 키의 경우와 마찬가지로) 관리자가 권한을 가지고있는 동안에 만 관리자에게 권한이 있음이 드러납니다. –