Windows上有办法判断一个程序的运行方式吗?

在Windows上运行程序,可以在资源管理器双击程序运行,也可以在cmd/powershell中输入程序路径运行。
我想问一下,有没有相应的Windows API或者其它什么方法可以判断这些不同的运行方式。

阅读 2.7k
3 个回答

第一种办法,查自己程序的父进程,难度高一点。很多反破解软件都会检查自己是不是被dasm一类的运行的。

第二种,针对win平台,可以对你的程序进行包装,把主体隐藏起来,通过具有相同icon的启动器来运行:分别提供一个shortcut,加上一个特定的参数;提供一个exe文件,加隐藏属性,加入用户path,直接运行主体程序。这种除非用户特意区分,一般不会发现有什么不同。

第三种,程序启动的时候,检查前一个活动窗口。这个办法可能不是特别稳定,特别是如果你程序启动时间太长。

第四种,靠猜的。把当前所有窗口枚举,看看有没有标题跟你程序名称有关的explore或cmd或power shell窗口。

GetParentProcessID 可以获取父进程的 pid
CreateToolhelp32Snapshot 可以获取正在运行的进程列表,然后你通过父进程 pid 就能知道到底是哪个程序启动了你的程序。

如何运行应该是应用程序开发者来告知用户和系统的,而不是系统去感知应用程序该如何启动!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题