进程通信的问题,拜托大家帮帮忙!高分等候。

FENGYIZHUO 2003-11-07 08:51:20
进程1与进程2通过事件m_hUMSMonitorEvent同步,该事件在进程1中创建:
m_hUMSMonitorEvent = CreateEvent(
NULL, // no security attributes
TRUE, // manual reset event
FALSE, // not-signalled
"UMSMonitor"); // UMSMonitorMessage
在进程2中通过
m_hUMSMonitorEvent = OpenEvent(EVENT_ALL_ACCESS,FALSE,"UMSMonitor");得到事件句柄。

如果进程1用debug版本运行,则一切正常;
但如果进程1用release版本运行,则在进程2中得不到该事件的句柄,用GetLastError捕获到的错误码为5(Access is denied.)我已经试过在进程2中,无论用CreateEvent还是OpenEvent的第一个参数改用EVENT_MODIFY_STATE,都不行。已经没辙了,清各位帮忙支个招,感激不尽!
...全文
88 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shinka 2003-11-10
  • 打赏
  • 举报
回复
如果Service在默认使用LocalSystem用户建立的情况下,
是不能与普通AP共享内核对象的。

在创建Event对象时,可以将“允许所有用户访问”的权限设置给它。
这样在其他的进程中就可以访问此对象了。

在Service程序中,加入以下代码。

SECURITY_ATTRIBUTES saEventSecurity;
PSECURITY_DESCRIPTOR pEventSD = NULL;

// security inits
memset ( ( VOID *) &saEventSecurity, 0, sizeof ( SECURITY_ATTRIBUTES) );

// alloc & init SD
if ( ! ( pEventSD = ( PSECURITY_DESCRIPTOR)
( malloc ( SECURITY_DESCRIPTOR_MIN_LENGTH)) ) )
return;

if ( ! InitializeSecurityDescriptor ( pEventSD,
SECURITY_DESCRIPTOR_REVISION) )
return;

// set NULL DACL on the SD
if ( ! SetSecurityDescriptorDacl ( pEventSD, TRUE, ( PACL) NULL, FALSE) )
return;

// now set up the security attributes
saEventSecurity.nLength = sizeof ( SECURITY_ATTRIBUTES);
saEventSecurity.bInheritHandle = TRUE;
saEventSecurity.lpSecurityDescriptor = pEventSD;

HANDLE m_hUMSMonitorEvent = CreateEvent(
&saEventSecurity , // no security attributes
TRUE, // manual reset event
FALSE, // not-signalled
"UMSMonitor"); // UMSMonitorMessage

以上.
LeeZi 2003-11-08
  • 打赏
  • 举报
回复
将Service的DCOM设置更改为交互式用户
dawndu 2003-11-08
  • 打赏
  • 举报
回复
Access is denied是和权限有关,你没有看见第一个参数security attributes吗?
FENGYIZHUO 2003-11-07
  • 打赏
  • 举报
回复
to shinka(午夜妖灵)

你说的太对了!没错,进程1就是Service程序,权限上有什么限制么?那么我该怎么解决呢?
shinka 2003-11-07
  • 打赏
  • 举报
回复
在普通的AP中,用以上的代码试了一下,应该没有问题的。
考虑可能与程序本身权限有关。
这两个进程中如果有一个是Service程序就可能存在访问权限问题。
还有就是请确认一下是不是在Administrator用户下调试VC程序的。

以上.
flyelf 2003-11-07
  • 打赏
  • 举报
回复
没有遇到这个问题

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧