Kal*_*son 14
当您安装清单(例如wevtutil im manifest.man)时,如果资源不可用,您应该看到某种警告:
**** Warning: Publisher EventsProvider resources are not accessible.
Run Code Online (Sandbox Code Playgroud)
要获取一些其他信息,请尝试检索其中一个发布者的信息.例如:
c:\...> wevtutil gp <EventProviderName>
Failed to open metadata for publisher <EventProviderName>. Access denied.
Run Code Online (Sandbox Code Playgroud)
好的,上面提示了权限问题,所以让我让路径可访问并再试一次:
c:\...> wevtutil gp <EventProviderName>
Failed to open metadata for publisher <EventProviderName>. The specified resource
type cannot be found in the image file.
Run Code Online (Sandbox Code Playgroud)
对于上面的内容,看起来资源没有正确编译.
如果你File->Open使用VS并在资源查看器中打开你的exe,你应该能够看到编译的资源.你应该至少有一个"WEVT_TEMPLATE"条目.
要正确编译资源,csc需要按如下方式传递资源:
csc /win32res:<Resource.res>
Run Code Online (Sandbox Code Playgroud)
小智 12
您注册的DLL需要具有一组特定的文件权限.我怀疑事件记录服务在"本地服务"帐户下运行.所以仅仅给予SYSTEM访问权限是不够的.我通过给我的PC上的"USERS"组"读取并执行"特权来解决问题.
我遇到了一个令人讨厌的问题,花了一天的时间来追查.我分享了我的项目工作文件夹,然后取消共享.出于某种原因,这取消了"USERS"访问权限.我认为这是因为事件跟踪Windows SDK中的示例将所有dll复制到C驱动器下的特殊文件夹并从那里安装提供程序.在C驱动器下创建文件夹时,USERS组将自动获得访问权限.
小智 8
我有完全相同的错误,但解决方案与已发布的其他答案略有不同.我必须打开清单文件并更改resourceFileName和messageFileName属性以使用应用程序可执行文件的绝对路径.
我遇到了类似的问题.解决方案是
如果您的清单文件被称为manifest.man和manifest.dll,然后
授予每个人读取权限
icacls %~dp0\manifest.* /t /grant Everyone:R
使用绝对路径进行安装(%~dp0如果使用批处理文件,则可以使用变量)
wevtutil im %~dp0\manifest.man /rf:"%~dp0\manifest.dll" /mf:"%~dp0\manifest.dll"
| 归档时间: |
|
| 查看次数: |
6857 次 |
| 最近记录: |