停止直接执行主应用程序并从第二个应用程序执行它

Stop executing main application directly and execute it from the second application?

本文关键字:执行 应用程序 第二个      更新时间:2023-10-16

我想要的是使用我的小型LicenseExe应用程序启动我的主应用程序。

LicenseExe 将检查此系统是否已注册。

如果系统未注册,则应退出许可证可执行文件。如果系统已注册,则 LicenseExe 将调用 ShellExecute 或任何方法来执行主应用程序 exe。

这很容易,我可以做到这一点。

我想要的是,我的主应用程序永远无法通过直接双击其 exe 文件来执行。它仅由 LicenseExe 应用程序执行。可能吗?

这是一种使我的应用程序获得许可的技巧。所以,请指导我。如何停止直接执行我的主应用程序并使其依赖于我的小型 LicenseExe 应用程序。

主应用程序只能从 LicenseExe 应用程序启动,不能通过双击,甚至不能通过命令行启动。

我在Windows 7平台下使用C++Visual Studio 2010。

在主应用程序中,您可以检查已启动它的父进程。如果它不是LicenseExe,那么mainapp应该退出。

参考:Win32 进程如何获取其父进程的 pid?

除此之外,licenseExe 可以在启动主应用程序时将句柄或环境变量传递给它。主应用程序可以验证此类信息是否存在,并继续执行,否则退出。

您可以将主应用程序替换为动态链接库 (DLL)。

DLL 可以根据需要由LinceseExe动态调用。

您可以在主应用程序中使用命令行参数。启动时,请检查一组参数,如果它们不存在 - 退出应用程序。然后,在 LicenseExe 中,您可以使用只有您知道的给定参数调用应用程序。

Windows系统上的示例:

//main.cpp
int main(int argc, char* argv[]){
   if(argc==2 && argv[1]=="f20ASD129d0saCZasa"){
      // your normal app-code goes here
   }
   else return 0;
}

和许可证可执行文件:

//LicenseExe.cpp
#include "systemRegisteredTest.h"
int main(){
   if(systemIsLicensed())
       system("yourMainApp.exe f20ASD129d0saCZasa");
   else return 0;
}

在许可证中创建并锁定互斥锁.exe [当系统注册时] : CreateMutexEx

检查主应用程序中的互斥锁。如果互斥锁被锁定,主应用程序应继续执行。
否则它应该退出。