场景:需要使用U盘内文件夹覆盖至D盘,用于替代手动操作
其中用到的有
1,使用oftream写入文件
2,使用shappmgr.h,勾选自动隐藏任务栏
3,使用VBS创建快捷方式
4,使用批处理获取当前系统的桌面及启动2个文件的目的地并进行复制,达到开机自启动的目的

//导入相应模块
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <fstream>
#include <cassert>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <shappmgr.h>using namespace std;int main()
{/*调用FindWindow隐藏任务栏HWND task;task = FindWindow(L"Shell_TrayWnd", NULL);*/system("title POS终端文件更换程序 v1.3");cout << "v1.1:\n更新复制方式。\n";cout << "v1.2:\n新增了MPOS创建桌面快捷方式及开机自启动,皆为最大化窗口。\n";cout << "v1.3:\n增加勾选自动隐藏任务栏。\n";/*文件说明:a.vbs:生成POS主程序的桌面快捷方式。copy.bat:从注册表获取当前系统的“桌面”及“启动”文件夹并将桌面POS快捷方式复制到“启动”文件夹实现开机自启动*///创建a.vbsofstream avbs;avbs.open("a.txt");avbs << "set WshShell=WScript.CreateObject(\"WScript.Shell\")\n";avbs << "strDesktop=WshShell.SpecialFolders(\"Desktop\")\n";avbs << "set oShellLink=WshShell.CreateShortcut(strDesktop & \"\\MPOS.lnk\")\n";avbs << "oShellLink.TargetPath=\"D:\\MPOS\\bin\\MPosShell.EXE\"\n";avbs << "oShellLink.WindowStyle=3\n";avbs << "oShellLink.Description=\"MPOS\"\n";avbs << "oShellLink.WorkingDirectory=\"D:\\MPOS\\bin\"\n";avbs << "oShellLink.Save";avbs.close();//a.vbs创建完毕//创建copy.batofstream copy;copy.open("copy.txt");copy << "@echo off\n";copy << "for /f \"tokens=2,*\" %%i in ('reg query \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\" /v \"Desktop\"') do set \"desktop_dir=%%j\"\n";copy << "echo %desktop_dir%\n";copy << "for /f \"tokens=2,*\" %%i in ('reg query \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\" /v \"Startup\"') do set \"Startup_dir=%%j\"\n";copy << "echo %Startup_dir%\n";copy << "copy  \"%desktop_dir%\\MPOS.lnk\" \"%Startup_dir%\\MPOS.lnk\"\n";copy << "exit";copy.close();//更改文件后缀以使用system("rename a.txt a.vbs");system("rename copy.txt copy.bat");//定义POS机编号int posno;cout << "必须以管理员运行该程序备份才能生效!\n\n";cout << "请输入POS机编码:";cin >> posno;//原MPOS文件夹更名备份,再将程序所在目录下的MPOS文件夹复制至D盘。system("rename d:\\mpos MPOS_bak");system("xcopy mpos d:\MPOS /e /h /k /i /y");//清空posconf.ini文件以方便写入。ofstream truncini("D:\\MPOS\\bin\\mposconfig\\posconf.ini",ios::trunc);fstream posini;//向posconf.ini中写入配置数据posini.open("D:\\MPOS\\bin\\mposconfig\\posconf.ini",ios::out|ios::app);posini << "[MPOS]\n";posini << "PosNo=" << posno<<endl;posini << "##ServerUrl=http://192.168.21.70:7480/cre-pos/\n";posini << "ServerUrl=http://XXX.XXX.XXX.XXX:XXXX/cre-pos/\n";posini << "Reg=\n";posini << ";是否全屏  0 不全屏;1 全屏;默认 0 不全屏; \n";posini << "FullScreen=0\nFirstRun=0\n;窗口分辨率,缺省为1024*768\n";posini << "标准分辨率=1024*768\n";posini << "FVersion=17112002\n";posini << "FVersionName=1.13-SNAPSHOT\n";posini << ";副屏播放模式0 不开启副屏  1 图片轮播,  2 广告播放,  默认不开启副屏\n";posini << "FViceScreenMode=0\n";posini.close();cout << "安装成功!接下来将进行其他配置,请稍后.....\n";system("start a.vbs");cout << "桌面快捷方式安装成功!\n";Sleep(5000);system("start copy.bat");//删除运行时用到的子程序。Sleep(3000);//睡眠3秒//设置勾选自动隐藏任务栏LPARAM lParam;lParam = ABS_AUTOHIDE;APPBARDATA  apBar;memset(&apBar, 0, sizeof(apBar));apBar.cbSize = sizeof(apBar);apBar.hWnd = FindWindow(L"Shell_TrayWnd", NULL);if (apBar.hWnd != NULL){apBar.lParam = lParam;SHAppBarMessage(ABM_SETSTATE, &apBar);  //设置任务栏自动隐藏}//删除使用完毕的文件system("del a.vbs");system("del copy.bat");/*强制隐藏任务栏ShowWindow(task, SW_HIDE);*/cout << "开机启动安装成功!按任意键退出.....\n";system("pause>>null");system("del null");return 0;
}

转载于:https://www.cnblogs.com/fuRyZ/p/8835000.html

VS2015 C++ 海鼎MPOS更新程序相关推荐

  1. 联合海鼎布局智慧商超、生鲜,微盟智慧零售再升级

    "信息的DNA正在迅速取代原子而成为人类生活中的基本交换物,从原子到比特的飞跃已是势不可挡.不可逆转",美国学者尼葛洛庞帝在其1996年出版的<数字化生存>一书中做出了 ...

  2. 企业内网中的WSUS更新服务 服务器连接到Microsoft Update来获取更新程序

    这里我们先了解下WSUS更新的途径 1.单WSUS服务器环境 企业网络中部署了一台WSUS服务器,WSUS服务器连接到Microsoft Update来获取更新程序(称之为:同步),并分发给企业网络中 ...

  3. VS2010中:error C2471: 无法更新程序数据库

    Visual Studio 2010环境下 error C2471: 无法更新程序数据库"--.pdb" fatal error C1083: 无法打开程序数据库文件:" ...

  4. STM32的调试方式、更新程序、仿真以及补救措施

    STM32的调试方式.更新程序.仿真以及补救措施 1. STM32的调试方式选择 STM32支持JTAG和SWD两种调试方式,且默认状态下这两种调试功能都是开启的. 由此我们可以知道: 如果要使用JT ...

  5. C#软件自动更新程序

    2019独角兽企业重金招聘Python工程师标准>>> 基于C#实现的软件自动更新程序,之前在网上搜集了两款软件自动更新程序,在实际应用中,对部分BUG进行修复,添加+完善一些功能. ...

  6. 基于libUSB的USB设备固件更新程序(下载数据)(转)

    源:基于libUSB的USB设备固件更新程序(下载数据) 本文紧接上一篇日志:基于libUSB-Win32的USB设备固件更新程序(前言),相关背景以及起因等,此处不再赘述,如感兴趣请移步. libU ...

  7. 【原创】自动更新程序2--更新程序的主窗体(技术:spring.net+三层架构+webservice+IrisSkin2换肤)...

    上篇文章主要介绍了webservice的部署以及主要的代码,下面给大家贴上主程序的代码,并简单的讲解.主程序判断是否有更新时通过主程序目录下有一个update.ini文件内的version是否有变化, ...

  8. C# WINFORM的自动更新程序

    自动更新程序AutoUpdate.exe https://git.oschina.net/victor596jm/AutoUpdate.git 1.获取源码 http://git.oschina.ne ...

  9. 如何制作自动更新程序?

    原文出自:http://blog.csdn.net/metaphysis/article/details/18866631 如何制作自动更新程序? [版权所有 邱秋 2014 metaphysis@y ...

最新文章

  1. 【干货】史上最全的Tensorflow学习资源汇总,速藏!
  2. 背景颜色的不透明度,但不是文本[重复]
  3. AMDKFD 合并入 Linux 3.19 内核
  4. TensorFlow – A Collection of Resources
  5. 机器学习笔记——K-means
  6. element 往node里面增加属性值_HashMap加载因子为何0.75,为何初始化值2的指数幂,底层解析...
  7. VS返回到上次编辑和进入到下次编辑的位置快捷键
  8. 0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)
  9. JSON与JAVA的数据转换
  10. 旧电脑装什么系统最快_旧电脑装什么系统好_老旧电脑适合装什么操作系统
  11. MacOS下DockerCE的使用方式
  12. centos 安装wget命令
  13. 高薪职业,英年早秃?关于程序员,多的是你不知道的事……
  14. android 极简浏览器,XBrowser 一款Android下极简的浏览器,个人作品但不输商业产品...
  15. 7. 重磅硬核 | 一文聊透对象在JVM中的内存布局,以及内存对齐和压缩指针的原理及应用
  16. 图形数据库Titan-学习笔记
  17. html抓取网址某链接,URL 筛选小工具 提取网页中的链接地址
  18. 低通滤波器对实际控制系统的作用
  19. 社会工程学之黑客七宗罪——傲慢(Hooking)
  20. JAVA的环境变量设置

热门文章

  1. 浅谈HTML5和H5区别
  2. word中插入endnote 为什么会是大括号,而且后面没有文献
  3. linux脚本编写后怎么退出,linux脚本编写退出拍摄pdf
  4. 在亚马逊严抓测评的风口下,亚马逊买家秀关联视频或许是一个安全有效的方式
  5. 轨道交通计算机网络技术,城市轨道交通列车网络控制技术
  6. 阿里云服务器 Certbot 申请 LetsEncrypt 泛域名免费证书,并实现自动续订
  7. 886n虚拟服务器,TP-Link TL-WR886N V4路由器端口映射怎么设置
  8. 基于python的opencv_基于Python和OpenCV的人脸检测
  9. php开发的app商城,如何利用PHP语言开发手机APP
  10. 有苦有乐的算法 --- 两个元素交换的三种方式