求助:如何判断一个程序(比如记事本),是由用户双击打开的,还是由其它程序调用SHELL打开的呢?

时间:2021-04-25 09:56:00
如题?我觉得应该还是有区别的,但是无从下手,请高手指教,或给个参考思路也好.

10 个解决方案

#1


用VC的都是牛人啊,谁能指点一二,谢谢!

#2


不知道父进程是否管用。

#3


没区别
windows下进程一旦启动就没有父子关系了
而且子进程的继承性是由父进程在启动它时指定的
你也不会知道他都继承或没继承什么

#4


引用 2 楼 jennyvenus 的回复:
不知道父进程是否管用。


ShellExecute的第一个参数设为NULL,估计父窗口就没用了。

#5


读取注册表,看里面有没有这个程序,开机系统自动运行的程序里面都会有的,如果读不到,则是用户自己启动的,读到了就是系统自动运行的了。

#6


我看有的杀毒软件能够分辨是一些系统程序是由木马程序调用的,还是由用户直接双击调用的?我也想做类似的功能,但是不知道怎么实现,请高手指点,谢谢!

#7


引用 6 楼 lclwcf 的回复:
我看有的杀毒软件能够分辨是一些系统程序是由木马程序调用的,还是由用户直接双击调用的?我也想做类似的功能,但是不知道怎么实现,请高手指点,谢谢!


那应该是在启动瞬间做判断把
不知道钩CreateProcess可不可以

#8


不太明白是怎么实现的,还盼高手解答.
我觉得还是从程序往上追溯得到的吧.
也可能是监控的API?

#9


应该是钩子吧,如当用户doubleclick时,截获消息,从消息参数中解析到要运行的程序。但这样监控所有的windows消息,会影响系统性能。

#10


读取注册表,看里面有没有这个程序,开机系统自动运行的程序里面都会有的,如果读不到,则是用户自己启动的,读到了就是系统自动运行的了。 
或者用钩子吧,如当用户doubleclick时,截获消息,从消息参数中解析到要运行的程序。但这样监控所有的windows消息,会影响系统性能。

 

#1


用VC的都是牛人啊,谁能指点一二,谢谢!

#2


不知道父进程是否管用。

#3


没区别
windows下进程一旦启动就没有父子关系了
而且子进程的继承性是由父进程在启动它时指定的
你也不会知道他都继承或没继承什么

#4


引用 2 楼 jennyvenus 的回复:
不知道父进程是否管用。


ShellExecute的第一个参数设为NULL,估计父窗口就没用了。

#5


读取注册表,看里面有没有这个程序,开机系统自动运行的程序里面都会有的,如果读不到,则是用户自己启动的,读到了就是系统自动运行的了。

#6


我看有的杀毒软件能够分辨是一些系统程序是由木马程序调用的,还是由用户直接双击调用的?我也想做类似的功能,但是不知道怎么实现,请高手指点,谢谢!

#7


引用 6 楼 lclwcf 的回复:
我看有的杀毒软件能够分辨是一些系统程序是由木马程序调用的,还是由用户直接双击调用的?我也想做类似的功能,但是不知道怎么实现,请高手指点,谢谢!


那应该是在启动瞬间做判断把
不知道钩CreateProcess可不可以

#8


不太明白是怎么实现的,还盼高手解答.
我觉得还是从程序往上追溯得到的吧.
也可能是监控的API?

#9


应该是钩子吧,如当用户doubleclick时,截获消息,从消息参数中解析到要运行的程序。但这样监控所有的windows消息,会影响系统性能。

#10


读取注册表,看里面有没有这个程序,开机系统自动运行的程序里面都会有的,如果读不到,则是用户自己启动的,读到了就是系统自动运行的了。 
或者用钩子吧,如当用户doubleclick时,截获消息,从消息参数中解析到要运行的程序。但这样监控所有的windows消息,会影响系统性能。