资源简介
通常软件保存用户数据无非两种方法:
1.自己建立文件保存用户数据。
2.在注册表中保存数据。
有没有可能利用软件可执行文件自身来保存数据呢?因为软件还在运行,直接修改自身是不可能的。但有一种间接的方法:先制作一个自身的副本,然后修改副本后退出。退出时运行副本,副本运行时将自身复制为主后退出。副本退出时再运行主本,此时主本再删除副本。
整个过程的关键是识别自身是主本还是副本及此次运行要执行的操作。这些可通过加命令行参数来识别。
如果副本运行时主本还未退出,则复制或删除会失败,所以要等待动作成功完成后再进行下一步。
缺点是退出到副本能运行之间有段时间的,所以窗口会闪一下。
此方法可用于软件自升级,即用下载到的新软件替换自身。

代码片段和文件信息
// Demo.cpp : Defines the class behaviors for the application.
//
#include “stdafx.h“
#include “Demo.h“
#include “DemoDlg.h“
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//*****************************************************************************
// 全局变量定义
//*****************************************************************************
char szTempFilePath[MAX_PATH]=““;
char szModulePath[MAX_PATH]=““;
/////////////////////////////////////////////////////////////////////////////
// CDemoApp
BEGIN_MESSAGE_MAP(CDemoApp CWinApp)
//{{AFX_MSG_MAP(CDemoApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
ON_COMMAND(ID_HELP CWinApp::onhelp)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDemoApp construction
CDemoApp::CDemoApp()
{
// TODO: add construction code here
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CDemoApp object
CDemoApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CDemoApp initialization
BOOL CDemoApp::InitInstance()
{
//检查是否升级运行
if(CheckUpgrade()) return FALSE;
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
CDemoDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
return FALSE;
}
//*****************************************************************************
// 运行外部程序 szModule=程序路径 szParameter=运行参数 nShowCmd=显示方式
//*****************************************************************************
BOOL Execute(LPCSTR szModule LPCSTR szParameter INT nShowCmd)
{
BOOL fgRet = FALSE;
SHELLEXECUTEINFO shell;
shell.cbSize = sizeof(shell);
shell.hwnd = NULL;
shell.lpVerb = “Open“;
shell.lpFile = szModule;
shell.lpParameters = szParameter;
shell.lpDirectory = NULL;
shell.nShow = nShowCmd;
shell.fMask = SEE_MASK_NOCLOSEPROCESS;
if(ShellExecuteEx(&shell))
{
fgRet = TRUE;
//提升优先级,使命令尽快被执行
SetPriorityClass(shell.hProcess IDLE_PRIORITY_CLASS);
SetPriorityClass(GetCurrentProcess() REALTIME_PRIORITY_CLASS);
SetThreadPriority(G
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 20808 2013-03-23 15:40 Demo\Demo.aps
文件 1122 2013-03-23 15:40 Demo\Demo.clw
文件 4594 2013-03-23 15:29 Demo\Demo.cpp
文件 4127 2013-03-23 10:39 Demo\Demo.dsp
文件 514 2013-03-23 10:18 Demo\Demo.dsw
文件 2301 2013-03-23 15:15 Demo\Demo.h
文件 66560 2013-03-23 15:40 Demo\Demo.ncb
文件 3092 2013-03-23 15:38 Demo\Demo.plg
文件 5286 2013-03-23 10:52 Demo\Demo.rc
文件 5499 2013-03-23 15:36 Demo\DemoDlg.cpp
文件 1351 2013-03-23 15:19 Demo\DemoDlg.h
文件 3543 2013-03-23 10:18 Demo\ReadMe.txt
文件 728 2013-03-23 10:52 Demo\Resource.h
文件 206 2013-03-23 10:18 Demo\StdAfx.cpp
文件 1054 2013-03-23 14:52 Demo\StdAfx.h
文件 3122176 2013-03-23 15:38 Demo\Debug\Demo.bsc
文件 396 2013-03-23 10:18 Demo\res\Demo.rc2
文件 1078 2013-03-23 10:18 Demo\res\Demo.ico
..A.SH. 3072 2013-03-23 15:41 Demo\res\Thumbs.db
文件 50688 2013-03-23 15:40 Demo\Demo.opt
目录 0 2013-03-23 15:39 Demo\Debug
目录 0 2013-03-23 15:39 Demo\res
目录 0 2013-03-23 15:39 Demo\Release
目录 0 2013-03-23 15:39 Demo
----------- --------- ---------- ----- ----
3298195 24
相关资源
- 联想H61主板BIOS升级F9KT58AUS支持22NM.i
- 升腾Win终端系统升级方法新版.doc
- [免费]MW310R V4.0升级软件20140123
- 图片存储到数据库保存二进制文件并
- 联想启天M4350 BIOS升级文件
- 易语言CMD替换自身源码
- 详细图解联想Y430\\Y530笔记本SLIC表2.
- 爱普生(EPSON)L3151 3153 3156 3157 3158不
- 自身免疫性疾病与1型糖尿病的治疗
- Infortrend EonStor全光纤磁盘阵列满足交
- SVC微码升级方案
- 羧基肽酶-H抗体对成人隐匿性自身免疫
- 易语言将指定网页保存为Mht文档源码
- 联想iH61m主板升级BIOS支持I7.E3等22NM
- 易语言编辑框批量保存模块源码
- 神舟笔记本bios版本1.14
-
ST-li
nkv2、v2.1最新官方固件升级工具 - 易语言报表编辑器源码易语言电脑装
- ROS 6.40.3最新破解版 Mikrotik RouterOS L6全
- 志诚 VS.T591_V1.1 升级软件 程序 USB 花屏
- 74cms骑士人才系统升级到最新4.2.131含
- (补充)修改output-example,将H.264AAC帧
- 天音淘宝店铺宝贝批量复制大师V3.2
- ArcGis 编辑过程自动保存插件
- openssh 7.9p1 rpm包
- IPv4向IPv6的升级过渡解决方案
- ffmpeg提取mp4关键帧保存为jpg.zip
- openssh8.1p1离线编译升级包
- Termite最新版1.8.4.zip
- FLASH AS 简易涂鸦板带本地保存功能与
评论
共有 条评论