Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如果XBAP在调试器外部运行,则ExceptionPolicy.HandleException不会安装用于登录注册表的事件源_Wpf_Logging_Enterprise Library_Registry_Xbap - Fatal编程技术网

Wpf 如果XBAP在调试器外部运行,则ExceptionPolicy.HandleException不会安装用于登录注册表的事件源

Wpf 如果XBAP在调试器外部运行,则ExceptionPolicy.HandleException不会安装用于登录注册表的事件源,wpf,logging,enterprise-library,registry,xbap,Wpf,Logging,Enterprise Library,Registry,Xbap,我正在使用(Microsoft Enterprise Library的)日志应用程序块在事件查看器中记录WPF XBAP应用程序中发生的异常 如果从Visual Studio在调试器中运行XBAP,则会在注册表中自动创建应用程序的事件源条目,地址为: HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MyApp 这发生在调用HandleException()的点上 但是,如果直接从文件系统或

我正在使用(Microsoft Enterprise Library的)日志应用程序块在事件查看器中记录WPF XBAP应用程序中发生的异常

如果从Visual Studio在调试器中运行XBAP,则会在注册表中自动创建应用程序的事件源条目,地址为:

HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MyApp

这发生在调用HandleException()的点上

但是,如果直接从文件系统或其发布位置在IDE外部运行XBAP,则不会添加注册表项。因此,不会发生日志记录

我只能假设这是运行XBAP应用程序的安全问题,并且它们没有写入注册表的权限。这是我的项目中的设置吗?你知道为什么会这样吗


非常感谢您的帮助。

您认为这是一个权限问题,这是对的

如果尝试登录到事件日志,但事件源不存在,则运行时将尝试为事件源创建注册表项。如果您没有权限,则会抛出带有消息“请求的注册表访问不允许”的
System.Security.SecurityException
。企业库捕获此异常并尝试记录,表示无法记录消息。如果这也失败了,那么异常将被吞并

应用程序正在运行,因此没有创建注册表项的权限。您可以尝试将应用程序配置为以服务器运行。虽然他说这可能还是有问题

从ASP.NET登录时也经常出现此问题,通常的解决方案是在部署过程中创建所需的注册表项。对于WPF来说,这感觉有点错误,但是是否可以创建一个安装注册表项的Windows安装程序(.msi)?然后应用程序就不需要写入注册表(尽管它仍然需要从注册表中读取,所以希望没有权限问题!)

根据评论进行更新

如报告中所述:

是的,这是我们产品的设计缺陷 托管过程。你得到“完全信任” 从CLR的角度,但不是在 NT安全条款。我们会尽力的 在将来解决这个问题 释放


我不确定问题是否已解决,但可能是您看到的问题。

我刚刚检查过,我的应用程序肯定是作为完全信任应用程序运行的(“这是在属性的安全选项卡中选择的完全信任应用程序”)。我不能真正使用Windows Installer,因为该应用程序是XBAP,因此用户不安装该应用程序,他们只是通过浏览器中的URL访问它。在向事件源添加事件的情况下,应用程序似乎能够写入注册表。它只是无法在注册表中为第一个实例中的事件源创建文件夹。还有其他想法吗?似乎在浏览器中运行XBAP会限制事件日志记录。更多信息供参考:@Neo,可能不太理想,但您可以尝试使用您已知已设置的事件源(例如“应用程序”)。这将只需要对注册表进行读访问,我相信您应该具有读访问权限。很抱歉延迟回复。这不会导致“源”列在事件查看器中显示“应用程序”吗?就像你说的,这并不理想。@Neo:你说得对。你说得对。:)只是一个想法,试着让一些东西发挥作用。