openevent返回访问被拒绝 [英] openevent return access denied

查看:313
本文介绍了openevent返回访问被拒绝的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了活动
HANDLE h = CreateEvent(NULL, FALSE, FALSE, "eventname");
然后在另一个过程中打开它
HANDLE h1 = OpenEvent(EVENT_MODIFY_STATE, FALSE, "eventname");

我正常运行时效果很好.
但是当我在Windows服务中创建事件时,打开事件时会给出错误访问被拒绝.
有人可以对此问题表示怀疑吗?

I have created Event
HANDLE h = CreateEvent(NULL, FALSE, FALSE, "eventname");
And open it in another process
HANDLE h1 = OpenEvent(EVENT_MODIFY_STATE, FALSE, "eventname");

It work fine when I run normally.
But when I have created event in windows service it gives error Access denied while opening event.
Can anybody give sujjection to this problem

推荐答案

以下是CreateEvent的签名
Here is the signature for CreateEvent
HANDLE WINAPI CreateEvent(
  __in_opt  LPSECURITY_ATTRIBUTES lpEventAttributes,
  __in      BOOL bManualReset,
  __in      BOOL bInitialState,
  __in_opt  LPCTSTR lpName
);



您必须传递SECURITY_ATTRIBUTES结构,以授予将调用OpenEvent的用户(或组)访问权限.

看看为C ++中的新对象创建安全描述符 [ ^ ]-它显示了如何使用SECURITY_ATTRIBUTES.

最好的问候
Espen Harlinn



You ave to pass a SECURITY_ATTRIBUTES structure granting access to the user (or a group) that will call OpenEvent.

Take a look at Creating a Security Descriptor for a New Object in C++[^] - it shows how to work with SECURITY_ATTRIBUTES.

Best regards
Espen Harlinn


我认为这与第一个参数 LPSECURITY_ATTRIBUTES 有关.在msdn中,建议如果此参数为NULL,则子进程不能继承该句柄.".

您最好尝试解决此问题.

MSDN链接
I think it has something to do with first parameter LPSECURITY_ATTRIBUTES. in msdn it is suggested "If this parameter is NULL, the handle cannot be inherited by child processes.".

You better try to fix this issue.

MSDN link


这篇关于openevent返回访问被拒绝的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆