zoukankan      html  css  js  c++  java
  • WIN7/8系统下程序接收不到WM_COPYDATA 消息的原因和解决

    在WIN7/win8,如果发送消息的程序用户权限低于和接收消息的程序,则消
    息无法传递。发送程序必须等于或者等于接收程序的权限。如发送与接收
    是同一个用户,或者发送是管理员帐户,接收是是普通用户,这样就可以
    成功。

    以下内容摘自: http://blog.csdn.net/tian_jinping/article/details/12950077

    正如我们前文所说,等级的划分,是为了防止以下犯上。所以,有了用户
    界面特权隔离,一个运行在较低特权等级的应用程序的行为就受到了诸多
    限制,它不可以:
      验证由较高特权等级进程创建的窗口句柄
      通过调用SendMessage和PostMessage向由较高特权等级进程创建的窗
    口发送Windows消息
      使用线程钩子处理较高特权等级进程
      使用普通钩子(SetWindowsHookEx)监视较高特权等级进程
      向一个较高特权等级进程执行DLL注入
      但是,一些特殊Windows消息是容许的。因为这些消息对进程的安全性
    没有太大影响。这些Windows消息包括:
      0x000 - WM_NULL
      0x003 - WM_MOVE
      0x005 - WM_SIZE
      0x00D - WM_GETTEXT
      0x00E - WM_GETTEXTLENGTH
      0x033 - WM_GETHOTKEY
      0x07F - WM_GETICON
      0x305 - WM_RENDERFORMAT
      0x308 - WM_DRAWCLIPBOARD
      0x30D - WM_CHANGECBCHAIN
      0x31A - WM_THEMECHANGED
      0x313, 0x31B (WM_???)
      修复UIPI问题
      基于Windows Vista之前的操作系统行为所设计的应用程序,可能希望
    Windows消息能够在进程之间自由的传递,以完成一些特殊的工作。当这些
    应用程序在Windows 7上运行时,因为UIPI机制,这种消息传递被阻断了,
    应用程序就会遇到兼容性问题。为了解决这个问题,Windows Vista引入了
    一个新的API函数ChangeWindowMessageFilter。利用这个函数,我们可以
    添加或者删除能够通过特权等级隔离的Windows消息。这就像拥有较高特权
    等级的进程,设置了一个过滤器,允许通过的Windows消息都被添加到这个
    过滤器的白名单,只有在这个白名单上的消息才允许传递进来。
      如果我们想容许一个消息可以发送给较高特权等级的进程,我们可以
    在较高特权等级的进程中调用ChangeWindowMessageFilter函数,以
    MSGFLT_ADD作为参数将消息添加进消息过滤器的白名单。同样的,我们也
    可以以MSGFLT_REMOVE作为参数将这个消息从白名单中删除。例如:
    在dtssm的主窗口中添加如下调用即可。
    [DllImport("user32")]
    public static extern bool ChangeWindowMessageFilter(uint msg, int
    flags);

    private void MainForm_Load(object sender, EventArgs e)
    {
    ChangeWindowMessageFilter(WM_COPYDATA, 1);
    ...
    }

  • 相关阅读:
    mysql常用基本命令
    mysql8.0.13下载与安装图文教程
    k8s ingress 增加跨域配置
    Jenkins 备份恢复插件 thinBackup 使用
    k8s HA master 节点宕机修复
    nginx 跨域问题解决
    mongodb 3.4.24 主从复制
    k8s 线上安装 jenkins并结合 jenkinsfile 实现 helm 自动化部署
    k8s helm 运用与自建helm仓库chartmuseum
    centos6 源码安装 unzip
  • 原文地址:https://www.cnblogs.com/elonlee/p/3833539.html
Copyright © 2011-2022 走看看