我对一些事很好奇。我正在开发一个Windows服务,并将所有诊断事件记录到Windows事件日志中。因此,当服务运行时,我打开事件查看器(从管理工具),以查看我的服务的操作结果。
这很好用,除了当我需要卸载我的程序时(再次,出于测试目的)。由于一些奇怪的原因,事件查看器锁定了我的服务的.exe映像文件,因此卸载程序无法删除它,错误代码为ERROR_SHARING_VIOLATION
:
The process cannot access the file because it is being used by another process.
这只发生在Vista和更高版本的操作系统上,在XP上似乎不是问题。
有没有办法让事件查看器释放文件锁?(我是在问程序设计。我当然可以手动关闭它,但这不是我想要的。)
3条答案
按热度按时间46scxncf1#
我是这样打开锁的:
1.开始->服务
1.查找 *Windows事件日志 *
1.右键-> * 重启 *
ikfrs5lh2#
Vista中引入了一个鲜为人知的功能,称为重启管理器,可以帮助您通过用户模式代码释放文件锁。由于您将其标记为C++,因此基于this article,这里有一个小的代码示例:
hgtggwj03#
我也遇到了同样的问题。DLL被svchost.exe进程锁定(Windows音频、DHCP客户端、Windows事件日志、TCP/IP NetBIOS帮助程序、安全中心、任务管理器)
解决方案:关闭事件查看器!:)