江湖救急啊!!关于vista下CreateMutex互斥体判断失败的问题.

来源:百度知道 编辑:UC知道 时间:2024/09/23 05:11:44
各位大哥大姐.这里有个问题请教一下..
我这里有个A.DLL,是放在windows目录下.由我的虚拟打印机驱动调用,调用A.DLL时,A.DLL里面需要判断我的另外一个程序B.EXE,是否已经启动了,如果没有启动则显示提示信息.因此在A.DLL里我就选用CreateMutex创建互斥体的方式来判断b.exe是否已经启动.但问题就在于.在xp下,A.DLL调用CreateMutex能够正确判断出B.EXE的打开与否.而在VISTA下则不行,同时,同样的代码,我另外做一个Dialog程序在vista下判断b.exe却是可以的.为什么呢?
同时,还有个现象是这样的,一开始设计的时候,本来是A.DLL判断B.EXE是否打开,没打开的话,是用shell啊.等之类的函数把程序打开的.但同样的代码,A.DLL调用后没有任何反应.另外做一个Dialog程序是可以打开的.这是为什么呢?跟用户有关?进程管理器里,A.DLL进程里用户显示的是system,而我的测试程序用户名就是用户名.是不是因为这个而无法调用?因为这个原因,就放弃这么做了..但检测B.EXE程序是否已经打开,这个却一定要做的,这个在XP下是能够实现的.可为什么vista下,怎么又不能实现了..
求求各位大哥大姐们啦,帮帮忙,看看是什么原因导致在vista下不能识别??

以 管理员身份登录,编译执行。
再不行,查看系统服务,可能系统服务中有相应服务项目被禁止了,开启之
(我也不知道,照这样应该能解决)

我也不太清楚,不过建议你把你的代码在Vista下编译一下再试试。

虽然微软已经说过了,XP下的程序大多都能够被VISTA兼容,但是因为VISTA在权限方面做了很大的改进(为了阻止病毒),所以多进程之间的句柄共享,权限就会存在差异,尤其你的代码就牵涉到这一块,所以我建议你去了解一下VISTA的相关文档。我没有在VISTA下的开发经验,所以帮不了你