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

C++ 停止直接执行主应用程序并从第二个应用程序执行它?,c++,C++,我想要的是使用我的小LicenseXe应用程序启动我的主应用程序 LicenseXe将检查此系统是否已注册 如果系统未注册,则应退出LicenseXe。 如果系统已注册,则LicenseXe将调用ShellExecute或任何方法来执行主应用程序exe 这很容易,我能做到 我想要的是,我的主应用程序无法通过直接双击其exe文件来执行。它仅由LicenseXe应用程序执行。可能吗 这是一种使我的应用程序获得许可的技巧。 所以,请引导我。如何停止直接执行主应用程序并使其依赖于我的小LicenseXe

我想要的是使用我的小LicenseXe应用程序启动我的主应用程序

LicenseXe将检查此系统是否已注册

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

这很容易,我能做到

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

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

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

我在Windows 7平台下使用C++ Visual Studio 2010。< /P> < P>可以用动态链接库DLL替换主应用程序。p> LinceseExe可以根据需要动态调用DLL。

您可以用动态链接库DLL替换主应用程序


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

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

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;
}

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

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;
}

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

这方面的参考:


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

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

这方面的参考:


除此之外,LicenseXe可以在启动mainapp时将句柄或环境变量传递给mainapp。mainapp可以验证这些信息是否存在,然后继续执行,否则退出。

在license.exe中创建并锁定互斥体[当系统注册时]:createMutex


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

在license.exe中创建并锁定互斥体[当系统注册时]:createmutex


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

您确定我可以这样做吗?它会安全吗?Dll不能由任何程序运行?Dll可以由反汇编工具破解。所以没有绝对的安全措施。你确定我能做到吗?它会安全吗?Dll不能由任何程序运行?Dll可以由反汇编工具破解。所以没有绝对的安全性。这看起来非常合理和有用。如果可能的话,请描述一下这种方法的优点和缺点?它完全安全吗?它能很容易开裂吗?谢谢。你给别人做的任何安全措施都可能被破坏。你只是想让它变得足够难,他们不会尝试。就我个人而言,我喜欢努力使我的软件变得有用,并减少对奇怪的海盗的担忧。听@david.pfx——这是事实。你能想到的所有解决方案都是可以破解的。没有任何优点/缺点。选一个你喜欢的。如果我真的想以某种方式保护我的应用程序,我可能会从这个主题中选择多种解决方案。@PawełStawarz:谢谢。让我稍微扩展一下——你的软件最大的敌人不是盗版,而是默默无闻。如果数百万人盗用你的软件,你应该心存感激,因为你迟早会发现如何从中赚钱。当然,为了鼓励诚实的人,购买比盗版更容易,但最大的威胁是没有人使用你的软件,因为没有人知道,也没有人关心,或者这太难了。@david.pfx,&PawełStawarz非常感谢大家。我明白了。我使用Paweł方法和附加的Mukt方法。这看起来很合理,也很有用。如果可能的话,请描述一下这种方法的优点和缺点?它完全安全吗?它能很容易开裂吗?谢谢。你给别人做的任何安全措施都可能被破坏。你
只是想让事情变得足够艰难,他们不会去尝试。就我个人而言,我喜欢努力使我的软件变得有用,并减少对奇怪的海盗的担忧。听@david.pfx——这是事实。你能想到的所有解决方案都是可以破解的。没有任何优点/缺点。选一个你喜欢的。如果我真的想以某种方式保护我的应用程序,我可能会从这个主题中选择多种解决方案。@PawełStawarz:谢谢。让我稍微扩展一下——你的软件最大的敌人不是盗版,而是默默无闻。如果数百万人盗用你的软件,你应该心存感激,因为你迟早会发现如何从中赚钱。当然,为了鼓励诚实的人,购买比盗版更容易,但最大的威胁是没有人使用你的软件,因为没有人知道,也没有人关心,或者这太难了。@david.pfx,&PawełStawarz非常感谢大家。我明白了。我使用Paweł方法和附加的Mukt方法。工作正常。另外检查父进程ID。使父进程创建命名事件并等待它,在子进程主进程中,打开命名事件,如果成功,则继续执行。另外检查父进程ID。使父进程创建命名事件并等待,在子进程主进程中,打开命名事件,如果成功,则继续执行。