Windows上有办法判断一个程序的运行方式吗?
在Windows上运行程序,可以在资源管理器双击程序运行,也可以在cmd/powershell中输入程序路径运行。
我想问一下,有没有相应的Windows API或者其它什么方法可以判断这些不同的运行方式。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在Windows上运行程序,可以在资源管理器双击程序运行,也可以在cmd/powershell中输入程序路径运行。
我想问一下,有没有相应的Windows API或者其它什么方法可以判断这些不同的运行方式。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
第一种办法,查自己程序的父进程,难度高一点。很多反破解软件都会检查自己是不是被dasm一类的运行的。
第二种,针对win平台,可以对你的程序进行包装,把主体隐藏起来,通过具有相同icon的启动器来运行:分别提供一个shortcut,加上一个特定的参数;提供一个exe文件,加隐藏属性,加入用户path,直接运行主体程序。这种除非用户特意区分,一般不会发现有什么不同。
第三种,程序启动的时候,检查前一个活动窗口。这个办法可能不是特别稳定,特别是如果你程序启动时间太长。
第四种,靠猜的。把当前所有窗口枚举,看看有没有标题跟你程序名称有关的explore或cmd或power shell窗口。
GetParentProcessID 可以获取父进程的 pid
CreateToolhelp32Snapshot 可以获取正在运行的进程列表,然后你通过父进程 pid 就能知道到底是哪个程序启动了你的程序。
如何运行应该是应用程序开发者来告知用户和系统的,而不是系统去感知应用程序该如何启动!