CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

关于程序控制的问题,如何受控的启动一个可执行文件,从而达到对此程序的License管理,很急,大家进来帮帮我吧

楼主chengwei_xj(ylxz.blogbus.com)2004-09-03 09:54:35 在 VC/MFC / 进程/线程/DLL 提问

问题是这个样子的  
          我有一个程序,可以正常运行,没有限制。现在想做这个程序的Demo和网络浮动License,也就是在网络中的一台主机上有一个License服务器,控制注册和同时有多少人可使用这个程序(这个已经通过winsock实现了),程序运行前,先去License服务器验证,看是否有足够的License。还要在程序运行过程中,每隔一段时间,去License服务器刷新。  
          但是没有源码,我想写一个调用程序,把要控制的程序作为一个子进程调用。大致代码如下  
  int   main(int   argc,   char*   argv[])  
  {  
          STARTUPINFO   si;  
          PROCESS_INFORMATION   pi;  
   
          ZeroMemory(   &si,   sizeof(si)   );  
          si.cb   =   sizeof(si);  
          ZeroMemory(   &pi,   sizeof(pi)   );  
   
          //   Start   the   child   process.    
          if(   !CreateProcess(   NULL,   //   No   module   name   (use   command   line).    
                  "man.blt",   //   man.blt是我想控制的程序。现在我只是改了个名字调用,但如果把man.blt改成man.exe了,就不受控制了,有什么办法吗  
                  NULL,                           //   Process   handle   not   inheritable.  
                  NULL,                           //   Thread   handle   not   inheritable.  
                  FALSE,                         //   Set   handle   inheritance   to   FALSE.    
                  0,                                 //   No   creation   flags.    
                  NULL,                           //   Use   parent's   environment   block.  
                  NULL,                           //   Use   parent's   starting   directory.    
                  &si,                             //   Pointer   to   STARTUPINFO   structure.  
                  &pi   )                           //   Pointer   to   PROCESS_INFORMATION   structure.  
          )    
          {  
                  printf("CreateProcess   failed.\n"   );  
          }  
   
          //   Wait   until   child   process   exits.  
          WaitForSingleObject(   pi.hProcess,   INFINITE   );  
   
          //   Close   process   and   thread   handles.    
          CloseHandle(   pi.hProcess   );  
          CloseHandle(   pi.hThread   );  
   
          printf("程序结束!\n");  
   
          system("PAUSE");  
                  return   0;  
  }  
   
  定时刷新的问题我可以通过一个线程做到.  
  现在的问题是  
  1.   这个方案在技术上有没有什么潜在的问题,我不太清楚.  
  2.   作为子进程调用的程序,我只是改了名,如果改后缀为exe,就不受控制了.有什么办法可以把这个文件"加密",在调用时候"解密".  
  3.   在这个程序中,子进程中止的时候,主进程就结束了.但是当主进程强行结束后,子进程还会运行.有什么办法吗?  
  4.   你认为还有什么其他的办法可以达到我的要求吗.  
  问题点数:100、回复次数:13Top

1 楼kvls(冰茶)回复于 2004-09-03 10:02:42 得分 0

2、您可以将受控程序的EXE头部进行修改,让它不能运行即可,开始运行时再将其还原。  
  3、采用注入线程到EXE的方法,在受控程序中添加您的控制代码。Top

2 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-09-03 10:02:56 得分 0

应该是受控程序主动的请求LICENCE,如果失败则主动退出程序,而不是根据程序可执行文件等来实现。Top

3 楼kvls(冰茶)回复于 2004-09-03 10:03:15 得分 40

2、您可以将受控程序的EXE头部进行修改,让它不能运行即可,开始运行时再将其还原。  
  3、采用注入线程到EXE的方法,在受控程序中添加您的控制代码。Top

4 楼microyzy(人不在牛,分高就行;分不在高,人牛也行)回复于 2004-09-03 10:03:30 得分 40

用进程枚举可能会好一点,然后就是处理改名之类的事情了Top

5 楼microyzy(人不在牛,分高就行;分不在高,人牛也行)回复于 2004-09-03 10:06:20 得分 0

如果只是要控制特定的程序,可以像楼上所说,加密exe文件,使其不能直接运行,然后通过你的程序来解密后再执行Top

6 楼chengwei_xj(ylxz.blogbus.com)回复于 2004-09-03 10:15:29 得分 0

to   DentistryDoctor(牙科医生)    
      我没有源代码,所以无法修改受控程序.  
   
  Top

7 楼lianglp(寻找黄金分割点)回复于 2004-09-03 10:22:22 得分 5

microyzy(毛毛叉)   的方法比较可行,也相对简单Top

8 楼chengwei_xj(ylxz.blogbus.com)回复于 2004-09-03 10:31:09 得分 0

那能把microyzy(毛毛叉)   的方法具体说一下嘛  
  时间比较紧,可能没时间细看了,谢谢了Top

9 楼chengwei_xj(ylxz.blogbus.com)回复于 2004-09-03 10:32:18 得分 0

另外,要注意的是系统可能是win98、win2000和winxpTop

10 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-09-03 10:33:52 得分 5

那试试注水了。Top

11 楼chengwei_xj(ylxz.blogbus.com)回复于 2004-09-03 13:15:34 得分 0

up一下Top

12 楼crystal521(【云淡风轻】)回复于 2004-09-03 14:03:48 得分 5

你可以对二进制文件进行修改达到加密的目的,运行时在把它改回来  
   
  Top

13 楼banjo(3天看问题)回复于 2004-09-03 14:26:40 得分 5

加密是一种办法,或者修改二进制码也可以Top

相关问题

  • 如何用程序控制打印文本文件
  • 怎样用vb程序控制关闭windows和删除文件?
  • ntfs文件权限怎么用程序控制?
  • 用程序控制打开文件行不行。
  • 请教个关于程序控制文件读写的问题
  • ASP.NET如何通过程序控制更换样式表文件!
  • 高分求救!!!!delphi能实现用程序控制文件夹共享吗?
  • 如何用程序控制,读取PDF文件的纯文本数据?
  • 在IE窗口内的图形文件能否不缩小。要求程序控制不缩小。
  • 真的没有办法了吗?把CONSOLE程序的输出导入到文件中,用程序控制.

关键词

  • 文件
  • 控制
  • 执行
  • 加密
  • 修改
  • 代码
  • 服务器
  • null
  • 程序
  • 受控

得分解答快速导航

  • 帖主:chengwei_xj
  • kvls
  • microyzy
  • lianglp
  • DentistryDoctor
  • crystal521
  • banjo

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo