用vc设计系统援救程序

一.引言

Windows的system.dat和user.dat中存储着windows注册表,win.ini和system.ini中也存储着一些重要的初始化信息,对它们进行备份可以避免一些重装系统之类的繁琐.虽然windos自带一些备份和恢复系统信息的功能,但是使用起来很不方便.经过一些研究,我发现你完全可以非常容易地设计出自己的系统援救程序.

二.关键问题分析

1.在程序中调用系统现有的程序.

使用WinExec(),ShellExecute(),CreateProcess()调用其它应用程序的这三种方法基本已经人所共知.但是有一些命令和程序它们不能调用,如DOS中的内部命令和sys.com等一些外部命令.这时,我们可以首先建立一个.bat的批处理文件,然后再用这三种方法之一采用隐藏的方式来调用这个批处理文件.这样我们可以在用户不知不觉中,来使用一些系统现成的功能.

2.如何备份系统信息

可以调用windows目录下command\目录中的scanreg.exe来备份系统信息,用/backup参数可以使前面介绍的文件被压缩成一个cab文件存储于windows目录下的sysbckup\目录中,文件名自动为rb000,rb001等.此命令不能直接调用,必须通过前面介绍的方法来使用它.如果你不想使用scanreg.exe,也可以使用同一个目录中的extract.exe来生成cab文件,这样虽然麻烦一些,但是灵活性较强.

注意,为了程序的通用性, windows目录不应根据你的计算机上的目录直接指定,而应使用GetWindowsDirectory()来获得.

3.如何恢复系统信息

注册表文件的恢复必须在纯DOS方式下,因此你的程序应让系统重启(使用ExitWindowsEx()),在没进入windows之前恢复系统信息.这可以通过修改autoexec.bat来实现.如果在备份时你使用的是scanreg /backup,那么在恢复时你可以在autoexec.bat中加入scanreg /restore.如果你备份时使用的是extract 那么你可以将形式如下的一条语句加入到autoexec.bat中:

extract /Y /L C:\windows myBackedFile.cab *.*

另外除特殊情况外,在纯DOS方式下一般不支持长路径名.因此在程序中将语句写入autoexec.bat时,要先用GetShortPathName()来转化为短路径名.

4.援救盘的创建

恢复系统可分两种情况.一种是用户想把系统信息恢复成以前某次备份时的状态,此时可使用户在程序中选择要恢复的备份,然后程序控制重启并在autoexec.bat中恢复即可.另一种情况则是用户由于误操作或其它原因是系统出错而不能进入windows,因此要建立援救软盘,以使用户能够恢复系统.援救盘的目的一个是启动系统,可以通过windows目录下command\目录中的sys.com来实现(如sys c: a:).另外软盘重要记住备份存放的位置,以便通过命令来恢复系统.

时间: 2024-11-03 18:22:11

用vc设计系统援救程序的相关文章

10个有用的界面设计的网络应用程序

 近年来,越来越多的桌面应用程序移植到互联网上面的.没有了平台限制和安装要求且作为一种服务模式的软件看起来很吸引人的.网络应用程序界面设计的核心是网页设计:但是,它的焦点主要集中在功能上面.为了和桌面程序竞争,网络应用程序必须提供简单,直观的以及响应快速的用户界面,这样才能减少用户完成事情的时间和精力.        过去我们没有用应有的方法来关注网络应用程序,现在该是仔细地研究一些有用的技术和设计方案,以便使网络应用程序更加友好和漂亮的.这篇文章阐述了第一部分我们在现代网络应用程序上面关于设计

利用VB6.0设计屏幕保护程序

Windows操作平台设有一个屏幕的保护措施,即屏幕保护功能.经常在Windows操作平台上使用电脑的人们对系统提供给我们的几个屏幕保护程序是不是感到非常平常了,没有新鲜感了,是不是想自己设计屏幕保护程序.下面介绍如何利用VB设计用户自己的屏幕保护程序.屏幕保护程序可以保护显示屏不被损坏,同时节约能源.作为屏幕保护程序,应该具有如下特性: 1)屏幕保护程序运行时,鼠标光标被自动隐藏,在程序结束时,光标显示.2)当单击.移动鼠标或按下键盘时,屏幕保护结束,回到正常操作状态.为了实现这些特性,在编写

使用UML类图设计Java应用程序(一)

UML已成为面向对象设计的标准图形化工具,在UML定义的各种图中,本文只涉及类图.Java应用程序由许多类所构成,类图的设计与实现,是Java实现面向对象应用程序的核心.本文通过一个具体的应用程序的设计与实现过程,详细说明了利用UML类图设计Java应用程序,使得开发过程标准化.可视化,代码编程简单化. 在类图中,类被描述为带有三层的盒子. 顶层为类名,一般用加粗字体表示.如果类是抽象的,其名称用斜体表示:如果类是接口,则在类名上方标注<<interface>>. 中间层包含类的属

XP系统提示“程序并行配置不正确”如何解决

  XP系统提示"程序并行配置不正确"怎么办?这个问题是我们在安装软件过程中经常会遇到的.一些xp系统用户发现软件老是安装失败,且提示"程序并行配置不正确".针对此问题,下面小编就给大家介绍XP系统提示"程序并行配置不正确"的解决方法. 解决方法一: 1.系统的安装模块服务被禁止了,就会造成程序无法安装,会提示"应用程序无法启动,因为应用程序的并行配置不正确.",出现这样的问题的解决方法是启用模块安装服务.先在开始菜单中,打开

mfc-vc++怎么在系统 控制面板程序程序和功能 里面添加自己的程序

问题描述 vc++怎么在系统 控制面板程序程序和功能 里面添加自己的程序 vc++怎么在系统 控制面板程序程序和功能 里面添加自己的程序怎么让360软件管家 以及其他的软件管家检测到自己的程序 vc 怎么实现 解决方案 只要把你的程序信息写在注册表的localmachinesoftwaremicrosoftwindowscurrentversionuninstall下,新建一个键,添加你的安装程序路径(你可以参考别的程序的做法). 然后就有了. 解决方案二: 编写控制面板程序的一个例子 如何编写

多层数据库开发一:设计数据库应用程序

                                          第一章 设计数据库应用程序 数据库应用程序允许用户与存储在数据库中的信息进行交互.数据库提供了信息的结构,供不同的应用程序共享. Delphi 4支持关系型数据库.关系型数据库以行和列即表格的形式来组织信息.当您设计一个数据库应用程序的时候,必须了解数据的结构,这样才能设计出一个合适的用户界面来显示数据库中的数据并且允许用户输入新的数据或者修改已有的数据.1.1 使用 数据库构件选项板的"Data Access&

VC++ 获取系统时间的方法汇总_C 语言

1.使用CTime类(获取系统当前时间,精确到秒) CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime();//获取系统日期 str=tm.Format("现在时间是%Y年%m月%d日 %X"); MessageBox(str,NULL,MB_OK); a,从CTimet中提取年月日时分秒 CTime t = CTime::GetCurrentTime(); int d=t.GetDay(); //获得几号 int y=t.

win8.1系统在程序或软件中输入文字变成问号怎么解决?

    win8.1系统在程序或软件中输入文字变成问号怎么解决?: 1.点击控制面板,然后将除自己使用的中文输入之外的其他语言.输入法等先全部删除; 2.然后再试一下,如果可以输入中文了,可适当添加一下"英语(美国)"即可. windows7教程 windows8教程 windows10教程

VC++的win32小程序内存泄漏,求高手解答

问题描述 VC++的win32小程序内存泄漏,求高手解答 做的一个简单的交通模拟小程序,用三个定时器分别产生 汽车处理消息,红绿灯更换消息和汽车随机产生消息.但是最后程序内存越跑越大.求高手解答.http://download.csdn.net/detail/hdwbdbsm/6724747这个是程序的下载地址,求高手.