为什么Win7下管理员权限运行程序SentMessage和postMessage拒绝访问?

H_rui 2011-10-13 05:33:50
我以管理员权限启动了一个程序,关联文件双击又启动了一个程序,在程序互斥里我用SentMessageTimerOut发给管理员权限运行的窗口一个消息,失败了,返回值5,拒绝访问,我用postMessage也是一样失败了!如何解决请告知一下,我怀疑是权限不同的程序不能交互通讯?我想遇到此问题的朋友告诉我一下解决办法!(请别灌水,很急的,麻烦大姐了,在此谢过了)
...全文
513 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
an_bachelor 2011-10-14
  • 打赏
  • 举报
回复
Vista之後加入了所謂UIPI 除了前述ChangeWindowMessageFilter 還可以考慮其他方式通信 比如socket
MDianng 2011-10-13
  • 打赏
  • 举报
回复
注意
ChangeWindowMessageFilter第一个参数的消息值必须大于WM_USER
即是一个自定义消息。
priest334 2011-10-13
  • 打赏
  • 举报
回复
typedef BOOL (WINAPI *_ChangeWindowMessageFilter)( UINT , DWORD);

BOOL AllowMeesageForWin7(UINT uMessageID, BOOL bAllow)//注册Win7全局消息
{
BOOL bResult = FALSE;

HMODULE hUserMod = NULL;

hUserMod = LoadLibrary( _T("user32.dll") );

if( NULL == hUserMod )
{
return FALSE;
}

do
{
_ChangeWindowMessageFilter pChangeWindowMessageFilter = (_ChangeWindowMessageFilter)GetProcAddress( hUserMod, "ChangeWindowMessageFilter" );

if( NULL == pChangeWindowMessageFilter )
{
AfxMessageBox(_T("create windowmessage filter failed"));

break;
}

bResult = pChangeWindowMessageFilter( uMessageID, bAllow ? 1 : 2 );//MSGFLT_ADD: 1, MSGFLT_REMOVE: 2
}while (0);


if( NULL != hUserMod )
{
FreeLibrary( hUserMod );
}

return bResult;
}
jackson35296 2011-10-13
  • 打赏
  • 举报
回复
权限问题,低权限的进程窗口不能给高权限的进程窗口发消息,也不能使用窗口函数来控制高权限窗口
Lactoferrin 2011-10-13
  • 打赏
  • 举报
回复
integrity level低的进程不能向高的进程发消息
用ChangeWindowMessageFilter调整

15,471

社区成员

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

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