记录贴:Runtime.getRunTime.exec() 读取.exe生成内容

记录贴:Runtime.getRunTime.exec() 读取.exe生成内容

问题:

  1. 双击exe文件时在同级目录生成了一个license_reg的注册文件。
  2. 使用runtime.exec()时并没有生成。
    目标:
    生成license_reg文件

解决方案一:

  • 先使用cmd运行Register.exe文件,发现并没有生成license_reg,但是发现在控制台输出了两行32长度的字符串,看编码格式并非16进制字符,而是类似BASE64或者两个MD5摘要,怀疑Register.exe
  • 在代码中使用getInputStream获取到了上述的字符串,解决方案一:手动截取字符串输出至File中

解决方案二:

  • 怀疑已经生成了license_reg但是位置不对,使用Everything全局查找。确实发现了license_reg
  • 重新查看runtime.exec()函数源码注释,发现可以通过workpath实现,设置workpath后,确实在工作目录下找到了license_reg
  • 直接使用cmd时,生成的文件在C:\Users\Admin 默认cmd打开时路径。
  • 编译器中的工作路径由项目路径所影响,可修改Working directory
 Runtime runtime = Runtime.getRuntime();
 // 通过设置workPath更改license_reg
 String register = DllConstant.OCR_DLL_DIR + "Register.exe";
 Process p = runtime.exec(register, null, new File(DllConstant.OCR_DLL_DIR));
 //取得命令结果的输出流
 InputStream fis = p.getInputStream();
 //用一个读输出流类去读
 InputStreamReader isr = new InputStreamReader(fis);
 //用缓冲器读行
 BufferedReader br = new BufferedReader(isr);
 String line = null;
 //直到读完为止
 while ((line = br.readLine()) != null) {
     System.out.println(line);
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值