如何在一个用户登陆程序里,只有当密码输入正确后才可以打开另一个EXE程序,而被开启的程序不能通过双击鼠标运行,

解决方案 »

  1.   

    密码输入前,监视,如果exe文件启动,则关闭它。
    密码输入后,撤销监视,winexec启动exe程序,
      

  2.   

    不用,目标EXE程序启动时检查是不是有传参数,参数个数,位置,内容对不对,不对的话就拒绝启动。要输入密码的那个程序,如果密码验证通过,则通过特殊的方式传给程序足够多,正确的参数。以启动程序。目标程序启动后再检查要输入密码的那个程序在不在,如果在运行,则关闭他,如果不在运行,拒绝启动。。
      

  3.   

    传参数是个办法,如一些网络游戏的做法.
    但是这样有个问题,别人用API SPY之类的工具可以拦截你传递的参数,还是不安全.
      

  4.   

    这个exe是你开发的还是启动外部的
    如果是你开发的那就好办,把它做成.dll。通过密码验证后调用该.dll就可以了
      

  5.   

    我想最好办法是,登录程序在密码输入正确后,创建一个Handle,而另一个Exe在启动时,只有发现这Handle被创建了才启动,否则拒绝,该exe启动时再创建一个Mutex的互斥量,以防止Handle被创建了,exe可以被双击,这样有了互斥量,该exe将不能被手工执行。
    ok了
      

  6.   

    传递参数是个简单的办法。而且没有必要担心传递的时候被拦截。
    我们可以把密码的判断写在第2个程序中。
    比如:
      user := paramstr(1);
      pwd := paramstr(2);
      然后去判断。
      但当 
      if paramcount < 3 then 
      ShowMessage('该程序不能直接调用。XXXX');
      但是,我实在想不到为什么你要把这些掰成两半来写。