我们在 ASP.NET 应用程序中调用 System.IO.Packaging.Package.Open()。此外,在调用它之前已执行 Windows 模拟,因为要打开的包存储在安全位置,并且需要模拟才能读取它。
问题是Package.Open()调用 EventTrace.EasyTraceEvent() ,后者又调用MS.Utility.EventTrace.IsClassicETWRegistryEnabled(),这会引发不允许请求注册表访问的安全异常。
即使在 Web.config 中特别禁用,也会发生这种情况。在调试和发布模式下。
因此我的困境。模拟是必需的,因为文件(包)的存储方式只能由模拟帐户访问。将其复制到不安全的位置会破坏安全性的目的。
授予模拟帐户对注册表的访问权限会在另一个方向上打开一个安全漏洞。除了一组特定的文件和文件夹之外,此帐户没有也不需要访问任何其他系统资源。
我真正想要的是让 EventTrace 从悬崖上飞跃,但我不知道如何告诉它这样做。
有任何想法吗?