亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? install.cpp

?? FastCopy 利用緩沖技術加快文件拷貝
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
static char *install_id = 
	"@(#)Copyright (C) H.Shirouzu 2005-2006   install.cpp	Ver1.33";
/* ========================================================================
	Project  Name			: Installer for FastCopy
	Module Name				: Installer Application Class
	Create					: 2005-02-02(Wed)
	Update					: 2006-02-26(Sun)
	Copyright				: H.Shirouzu
	Reference				: 
	======================================================================== */

#include "../tlib.h"
#include "instrc.h"
#include "install.h"

char	*SetupFiles [] = { FASTCOPY_EXE, INSTALL_EXE, README_TXT, HELP_CHM, CURRENT_SHEXTDLL, NULL };

/*
	WinMain
*/
int WINAPI WinMain(HINSTANCE hI, HINSTANCE, LPSTR cmdLine, int nCmdShow)
{
	return	TInstApp(hI, cmdLine, nCmdShow).Run();
}

/*
	僀儞僗僩乕儖傾僾儕働乕僔儑儞僋儔僗
*/
TInstApp::TInstApp(HINSTANCE _hI, LPSTR _cmdLine, int _nCmdShow) : TApp(_hI, _cmdLine, _nCmdShow)
{
}

TInstApp::~TInstApp()
{
}

void TInstApp::InitWindow(void)
{
	TDlg *maindlg = new TInstDlg(cmdLine);
	mainWnd = maindlg;
	maindlg->Create();
}


/*
	儊僀儞僟僀傾儘僌僋儔僗
*/
TInstDlg::TInstDlg(char *cmdLine) : TDlg(INSTALL_DIALOG), staticText(this)
{
	cfg.mode = strcmp(cmdLine, "/r") ? SETUP_MODE : UNINSTALL_MODE;
	cfg.programLink	= TRUE;
	cfg.desktopLink	= TRUE;
}

TInstDlg::~TInstDlg()
{
}

/*
	儊僀儞僟僀傾儘僌梡 WM_INITDIALOG 張棟儖乕僠儞
*/
BOOL TInstDlg::EvCreate(LPARAM lParam)
{
	GetWindowRect(&rect);
	int		cx = ::GetSystemMetrics(SM_CXFULLSCREEN), cy = ::GetSystemMetrics(SM_CYFULLSCREEN);
	int		xsize = rect.right - rect.left, ysize = rect.bottom - rect.top;

	::SetClassLong(hWnd, GCL_HICON, (LONG)::LoadIcon(TApp::GetInstance(), (LPCSTR)SETUP_ICON));
	MoveWindow((cx - xsize)/2, (cy - ysize)/2, xsize, ysize, TRUE);
	Show();

// 僾儘僷僥傿僔乕僩偺惗惉
	staticText.CreateByWnd(GetDlgItem(INSTALL_STATIC));
	propertySheet = new TInstSheet(&staticText, &cfg);

// 尰嵼僨傿儗僋僩儕愝掕
	char		buf[MAX_PATH], setupDir[MAX_PATH];
	TRegistry	reg(HKEY_LOCAL_MACHINE);

// Program Files偺僷僗庢傝弌偟
	if (reg.OpenKey(REGSTR_PATH_SETUP)) {
		if (reg.GetStr(REGSTR_PROGRAMFILES, buf, sizeof(buf)))
			MakePath(setupDir, buf, FASTCOPY);
		reg.CloseKey();
	}

// 婛偵僙僢僩傾僢僾偝傟偰偄傞応崌偼丄僙僢僩傾僢僾僨傿儗僋僩儕傪撉傒弌偡
	if (reg.OpenKey(REGSTR_PATH_UNINSTALL)) {
		if (reg.OpenKey(FASTCOPY)) {
			if (reg.GetStr(REGSTR_VAL_UNINSTALLER_COMMANDLINE, setupDir, sizeof(setupDir)))
				GetParentDir(setupDir, setupDir);
			reg.CloseKey();
		}
		reg.CloseKey();
	}
	SetDlgItemText(FILE_EDIT, setupDir);

	CheckDlgButton(cfg.mode == SETUP_MODE ? SETUP_RADIO : UNINSTALL_RADIO, 1);
	ChangeMode();

	return	TRUE;
}

/*
	儊僀儞僟僀傾儘僌梡 WM_COMMAND 張棟儖乕僠儞
*/
BOOL TInstDlg::EvCommand(WORD wNotifyCode, WORD wID, LPARAM hwndCtl)
{
	switch (wID) {
	case IDOK:
		propertySheet->GetData();
		if (cfg.mode == UNINSTALL_MODE)
			UnInstall();
		else
			Install();
		return	TRUE;

	case IDCANCEL:
		::PostQuitMessage(0);
		return	TRUE;

	case FILE_BUTTON:
		BrowseDirDlg(this, FILE_EDIT, "Select Install Directory");
		return	TRUE;

	case SETUP_RADIO:
	case UNINSTALL_RADIO:
		if (wNotifyCode == BN_CLICKED)
			ChangeMode();
		return	TRUE;
	}
	return	FALSE;
}

void TInstDlg::ChangeMode(void)
{
	cfg.mode = IsDlgButtonChecked(SETUP_RADIO) ? SETUP_MODE : UNINSTALL_MODE;
	::EnableWindow(GetDlgItem(FILE_EDIT), cfg.mode == SETUP_MODE);
	propertySheet->Paste();
}

BOOL IsSameFile(char *src, char *dst)
{
	WIN32_FIND_DATA	src_dat, dst_dat;
	HANDLE	hFind;

	if ((hFind = ::FindFirstFile(src, &src_dat)) == INVALID_HANDLE_VALUE)
		return	FALSE;
	::FindClose(hFind);

	if ((hFind = ::FindFirstFile(dst, &dst_dat)) == INVALID_HANDLE_VALUE)
		return	FALSE;
	::FindClose(hFind);

	if (src_dat.nFileSizeLow != dst_dat.nFileSizeLow || src_dat.nFileSizeHigh != dst_dat.nFileSizeHigh)
		return	FALSE;

	return	(*(_int64 *)&dst_dat.ftLastWriteTime == *(_int64 *)&src_dat.ftLastWriteTime) ||
		// src 偐 dst 偺僞僀儉僗僞儞僾偺嵟彫扨埵偑 1 昩埲忋乮FAT or SAMBA 摍偺壜擻惈乯偱偐偮...
		// 僞僀儉僗僞儞僾偺嵎偑 2 昩埲撪側傜丄摨堦僞僀儉僗僞儞僾偲傒側偡
		((*(_int64 *)&src_dat.ftLastWriteTime % 10000000) == 0 || (*(_int64 *)&dst_dat.ftLastWriteTime % 10000000) == 0) &&
			*(_int64 *)&dst_dat.ftLastWriteTime + 20000000 >= *(_int64 *)&src_dat.ftLastWriteTime &&
			*(_int64 *)&dst_dat.ftLastWriteTime - 20000000 <= *(_int64 *)&src_dat.ftLastWriteTime;
}

BOOL MiniCopy(char *src, char *dst)
{
	HANDLE		hSrc, hDst, hMap;
	BOOL		ret = FALSE;
	DWORD		srcSize, dstSize;
	void		*view;
	FILETIME	ct, la, ft;

	if ((hSrc = ::CreateFile(src, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0)) == INVALID_HANDLE_VALUE)
		return	FALSE;
	srcSize = ::GetFileSize(hSrc, 0);

	if ((hDst = ::CreateFile(dst, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)) != INVALID_HANDLE_VALUE) {
		if ((hMap = ::CreateFileMapping(hSrc, 0, PAGE_READONLY, 0, 0, 0)) != NULL) {
			if ((view = ::MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0)) != NULL) {
				if (::WriteFile(hDst, view, srcSize, &dstSize, 0) && srcSize == dstSize) {
					if (::GetFileTime(hSrc, &ct, &la, &ft))
						::SetFileTime(hDst, &ct, &la, &ft);
					ret = TRUE;
				}
				::UnmapViewOfFile(view);
			}
			::CloseHandle(hMap);
		}
		::CloseHandle(hDst);
	}
	::CloseHandle(hSrc);

	return	ret;
}

BOOL DelayCopy(char *src, char *dst)
{
	char	tmp_file[MAX_PATH];
	BOOL	ret = FALSE;

	wsprintf(tmp_file, "%s.new", dst);

	if (MiniCopy(src, tmp_file) == FALSE)
		return	FALSE;

	if (IsWinNT()) {
		ret = ::MoveFileEx(tmp_file, dst, MOVEFILE_DELAY_UNTIL_REBOOT|MOVEFILE_REPLACE_EXISTING);
	}
	else {
		char	win_ini[MAX_PATH], short_tmp[MAX_PATH], short_dst[MAX_PATH];

		::GetShortPathName(tmp_file, short_tmp, sizeof(short_tmp));
		::GetShortPathName(dst, short_dst, sizeof(short_dst));
		::GetWindowsDirectory(win_ini, sizeof(win_ini));
		strcat(win_ini, "\\WININIT.INI");
		// WritePrivateProfileString("Rename", "NUL", short_dst, win_ini); 昁梫側偝偦
		ret = WritePrivateProfileString("Rename", short_dst, short_tmp, win_ini);
	}
	return	ret;
}

BOOL TInstDlg::Install(void)
{
	char	buf[MAX_PATH], setupDir[MAX_PATH], setupPath[MAX_PATH], curDir[MAX_PATH];
	BOOL	is_delay_copy = FALSE;

// 僀儞僗僩乕儖僷僗愝掕
	GetDlgItemText(FILE_EDIT, setupDir, sizeof(setupDir));
	CreateDirectory(setupDir, NULL);
	DWORD	attr = GetFileAttributes(setupDir);

	if (attr == 0xffffffff || (attr & FILE_ATTRIBUTE_DIRECTORY) == 0)
		return	MessageBox(GetLoadStr(IDS_NOTCREATEDIR)), FALSE;
	MakePath(setupPath, setupDir, FASTCOPY_EXE);

	if (MessageBox(GetLoadStr(IDS_START), INSTALL_STR, MB_OKCANCEL|MB_ICONINFORMATION) != IDOK)
		return	FALSE;

// 僼傽僀儖僐僺乕
	if (cfg.mode == SETUP_MODE) {
		char	installPath[MAX_PATH], orgDir[MAX_PATH];

		::GetModuleFileName(NULL, orgDir, sizeof(orgDir));
		GetParentDir(orgDir, orgDir);

		for (int cnt=0; SetupFiles[cnt] != NULL; cnt++) {
			MakePath(buf, orgDir, SetupFiles[cnt]);
			MakePath(installPath, setupDir, SetupFiles[cnt]);

			if (MiniCopy(buf, installPath) || IsSameFile(buf, installPath))
				continue;
			if (strcmp(SetupFiles[cnt], CURRENT_SHEXTDLL) == 0 && DelayCopy(buf, installPath)) {
				is_delay_copy = TRUE;
				continue;
			}
			return	MessageBox(installPath, GetLoadStr(IDS_NOTCREATEFILE)), FALSE;
		}
	}

// 僗僞乕僩儊僯儏乕仌僨僗僋僩僢僾偵搊榐
	TRegistry	reg(HKEY_CURRENT_USER);
	if (reg.OpenKey(REGSTR_SHELLFOLDERS)) {
		char	*regStr[]	= { REGSTR_PROGRAMS, REGSTR_DESKTOP, NULL };
		BOOL	execFlg[]	= { cfg.programLink, cfg.desktopLink, NULL };

		for (int cnt=0; regStr[cnt]; cnt++) {
			if (reg.GetStr(regStr[cnt], buf, sizeof(buf))) {
				if (cnt != 0 || RemoveSameLink(buf, buf) == FALSE)
					::wsprintf(buf + strlen(buf), "\\%s", FASTCOPY_SHORTCUT);
				if (execFlg[cnt])
					SymLink(setupPath, buf);
				else
					DeleteLink(buf);
			}
		}
		reg.CloseKey();
	}

// 僔僃儖奼挘忣曬偺 update
	::GetModuleFileName(NULL, curDir, sizeof(curDir));
	GetParentDir(curDir, curDir);

	MakePath(buf, setupDir, CURRENT_SHEXTDLL);
	HMODULE		hShellExtDll = TLoadLibrary(buf);

	if (hShellExtDll) {
		BOOL (WINAPI *UpdateDllProc)(void) = (BOOL (WINAPI *)(void))GetProcAddress(hShellExtDll, "UpdateDll");

		if (UpdateDllProc)
			UpdateDllProc();
		::FreeLibrary(hShellExtDll);

		// 媽僶乕僕儑儞 dll 偺嶍彍
		char	*oldDlls[] = { SHELLEXT1_DLL, SHELLEXT2_DLL, SHELLEXT3_DLL, SHELLEXT4_DLL, NULL };
		for (int i=0; oldDlls[i]; i++) {
			MakePath(buf, setupDir, oldDlls[i]);
			if (::GetFileAttributes(buf) != 0xffffffff) {
				if (::DeleteFile(buf) == FALSE)
					::MoveFileEx(buf, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
			}
		}
	}

#if 0
// 儗僕僗僩儕偵傾儞僀儞僗僩乕儖忣曬傪搊榐
	if (reg.OpenKey(REGSTR_PATH_UNINSTALL)) {
		if (reg.CreateKey(FASTCOPY)) {
			MakePath(buf, setupDir, INSTALL_EXE);
			strcat(buf, " /r");
			reg.SetStr(REGSTR_VAL_UNINSTALLER_DISPLAYNAME, FASTCOPY);
			reg.SetStr(REGSTR_VAL_UNINSTALLER_COMMANDLINE, buf);
			reg.CloseKey();
		}
		reg.CloseKey();
	}
#endif

// 僐僺乕偟偨傾僾儕働乕僔儑儞傪婲摦
	if (MessageBox(GetLoadStr(is_delay_copy ? IDS_DELAYSETUPCOMPLETE : IDS_SETUPCOMPLETE), INSTALL_STR, MB_OKCANCEL|MB_ICONINFORMATION) == IDOK) {
		::SetCurrentDirectory(setupDir);
		::WinExec(setupPath, SW_SHOW);
	}

	::PostQuitMessage(0);
	return	TRUE;
}

BOOL TInstDlg::UnInstall(void)
{
	char	buf[MAX_PATH];

	if (MessageBox(GetLoadStr(IDS_START), UNINSTALL_STR, MB_OKCANCEL|MB_ICONINFORMATION) != IDOK)
		return	FALSE;

// 僗僞乕僩儊僯儏乕仌僨僗僋僩僢僾偐傜嶍彍
	TRegistry	reg(HKEY_CURRENT_USER);
	if (reg.OpenKey(REGSTR_SHELLFOLDERS)) {
		char	*regStr[]	= { REGSTR_PROGRAMS, REGSTR_DESKTOP, NULL };

		for (int cnt=0; regStr[cnt] != NULL; cnt++) {
			if (reg.GetStr(regStr[cnt], buf, sizeof(buf))) {
				if (cnt == 0)
					RemoveSameLink(buf);
				::wsprintf(buf + strlen(buf), "\\%s", FASTCOPY_SHORTCUT);
				DeleteLink(buf);
			}
		}
		reg.CloseKey();
	}

// 儗僕僗僩儕偐傜傾僾儕働乕僔儑儞忣曬傪嶍彍
	char	setupDir[MAX_PATH] = "";

	::GetModuleFileName(NULL, setupDir, sizeof(setupDir));
	GetParentDir(setupDir, setupDir);
	BOOL	is_shext = FALSE;

	MakePath(buf, setupDir, CURRENT_SHEXTDLL);
	HMODULE		hShellExtDll = TLoadLibrary(buf);
	if (hShellExtDll) {
		BOOL (WINAPI *IsRegisterDllProc)(void) = (BOOL (WINAPI *)(void))GetProcAddress(hShellExtDll, "IsRegistServer");
		HRESULT (WINAPI *UnRegisterDllProc)(void) = (HRESULT (WINAPI *)(void))GetProcAddress(hShellExtDll, "DllUnregisterServer");

		if (IsRegisterDllProc && UnRegisterDllProc && (is_shext = IsRegisterDllProc())) {
			UnRegisterDllProc();
		}
		::FreeLibrary(hShellExtDll);
	}

// 儗僕僗僩儕偐傜傾儞僀儞僗僩乕儖忣曬傪嶍彍
	if (reg.OpenKey(REGSTR_PATH_UNINSTALL)) {
		if (reg.OpenKey(FASTCOPY)) {
			if (reg.GetStr(REGSTR_VAL_UNINSTALLER_COMMANDLINE, setupDir, sizeof(setupDir)))
				GetParentDir(setupDir, setupDir);
			reg.CloseKey();
		}
		reg.DeleteKey(FASTCOPY);
		reg.CloseKey();
	}

// 廔椆儊僢僙乕僕
	MessageBox(is_shext ? GetLoadStr(IDS_UNINSTSHEXTFIN) : GetLoadStr(IDS_UNINSTFIN));

// 僀儞僗僩乕儖僨傿儗僋僩儕傪奐偔

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
极品少妇一区二区三区精品视频| 中文字幕一区三区| 欧美在线一区二区| 99久久国产免费看| 成人黄色在线看| 成人午夜免费电影| 国产高清精品久久久久| 国产成人精品亚洲日本在线桃色| 国产露脸91国语对白| 国产盗摄一区二区| 国产99精品视频| 成人午夜视频福利| 色婷婷激情综合| 精品视频全国免费看| 91精品啪在线观看国产60岁| 日韩天堂在线观看| 国产欧美一区二区三区沐欲| 国产精品麻豆视频| 亚洲综合色自拍一区| 亚洲精品国产高清久久伦理二区| ...av二区三区久久精品| 亚洲精品久久7777| 蜜桃一区二区三区四区| 91尤物视频在线观看| 91香蕉视频在线| 欧美精品欧美精品系列| 久久网这里都是精品| 亚洲色图色小说| 视频一区在线视频| 国产成人在线观看免费网站| 99国产精品久久久久| 欧美男男青年gay1069videost| 精品久久国产字幕高潮| 国产精品国产自产拍在线| 一区二区在线观看视频| 日韩二区三区在线观看| 国产大片一区二区| 欧美人xxxx| 国产精品视频第一区| 美女视频网站黄色亚洲| 不卡的av网站| 欧美区一区二区三区| 日韩美女在线视频| 亚洲欧美国产三级| 国产真实精品久久二三区| 色哟哟亚洲精品| 久久综合九色综合欧美亚洲| 夜夜亚洲天天久久| 成人性色生活片免费看爆迷你毛片| 色欧美88888久久久久久影院| 精品女同一区二区| 日韩黄色小视频| 99综合电影在线视频| 精品久久久久香蕉网| 亚洲动漫第一页| youjizz国产精品| 2017欧美狠狠色| 青椒成人免费视频| 欧美性高清videossexo| 国产精品国产馆在线真实露脸| 久久se精品一区二区| 欧美日韩免费在线视频| 一色屋精品亚洲香蕉网站| 国产伦精品一区二区三区免费 | 日韩一区二区在线播放| 亚洲免费色视频| 成人激情免费网站| 国产午夜精品久久久久久久| 精彩视频一区二区三区| 日韩欧美久久久| 天堂在线一区二区| 在线播放中文一区| 日韩精品成人一区二区在线| 欧美日本韩国一区二区三区视频| 亚洲另类春色国产| 一本色道久久综合亚洲91| 成人免费在线观看入口| 91玉足脚交白嫩脚丫在线播放| 最新国产精品久久精品| 91一区二区三区在线播放| 最新日韩在线视频| 在线精品视频免费观看| 亚洲成年人网站在线观看| 欧美日韩国产综合一区二区三区| 亚洲a一区二区| 欧美一卡二卡三卡| 国产精品一区在线观看乱码| 亚洲国产精品激情在线观看| 成人av电影在线网| 一区二区久久久久| 91精品国产综合久久婷婷香蕉| 蜜臀av一区二区在线免费观看 | 在线看日韩精品电影| 一区二区三区精品| 欧美日韩国产天堂| 麻豆免费精品视频| 国产精品视频一二| 欧美日韩一区国产| 国产在线精品国自产拍免费| 国产精品乱码一区二三区小蝌蚪| 色狠狠桃花综合| 蜜桃一区二区三区在线观看| 日本一区二区三区电影| 在线观看亚洲成人| 麻豆一区二区三区| 中文字幕一区二区不卡 | 精品sm捆绑视频| 99九九99九九九视频精品| 亚洲成a天堂v人片| 久久久久久久一区| 欧美色涩在线第一页| 黑人巨大精品欧美一区| 亚洲丝袜制服诱惑| 精品成人一区二区三区| 色菇凉天天综合网| 精品一区二区三区在线观看国产| 中文字幕视频一区二区三区久| 欧美日韩一区小说| 99久久综合国产精品| 蜜臀av亚洲一区中文字幕| 国产精品乱码久久久久久| 欧美精品vⅰdeose4hd| 成人av先锋影音| 久久er精品视频| 亚洲电影你懂得| 国产精品天美传媒沈樵| 欧美一区二区三区视频免费| av不卡一区二区三区| 裸体在线国模精品偷拍| 亚洲一区二区视频在线| 中文字幕巨乱亚洲| 日韩一区二区三区免费观看| 欧美日韩日日夜夜| 91老师国产黑色丝袜在线| 国产在线播精品第三| 丝袜亚洲精品中文字幕一区| 亚洲人午夜精品天堂一二香蕉| 久久午夜色播影院免费高清| 欧美一区二区免费观在线| 色av成人天堂桃色av| 不卡视频免费播放| 成人一区二区三区中文字幕| 国产在线精品国自产拍免费| 日韩福利电影在线观看| 亚洲成人免费看| 亚洲风情在线资源站| 亚洲资源中文字幕| 一区二区三区精品| 一片黄亚洲嫩模| 亚洲国产精品久久一线不卡| 伊人一区二区三区| 亚洲综合在线电影| 一区二区三区在线播放| 亚洲女与黑人做爰| 一区二区三区欧美日韩| 亚洲黄色尤物视频| 亚洲丶国产丶欧美一区二区三区| 午夜久久电影网| 日韩电影一二三区| 精品一区二区三区视频在线观看 | www.激情成人| 成人avav在线| 色偷偷久久一区二区三区| 色视频成人在线观看免| 欧美视频三区在线播放| 欧美美女bb生活片| 精品伦理精品一区| 国产欧美日韩三区| 亚洲精品精品亚洲| 美女一区二区视频| 国产成人精品午夜视频免费| av成人动漫在线观看| 在线欧美日韩国产| 欧美成人欧美edvon| 国产欧美一区二区精品久导航 | 久久这里都是精品| 国产精品免费av| 亚洲永久精品国产| 蜜臀久久久99精品久久久久久| 国产精品一二三在| 欧美色区777第一页| 亚洲精品一区二区三区影院| 亚洲欧洲日韩在线| 视频在线在亚洲| 国产精品资源在线看| 91蝌蚪porny| 日韩一区二区电影| 国产精品二三区| 日本aⅴ亚洲精品中文乱码| 国产乱人伦偷精品视频免下载| 色呦呦国产精品| 久久新电视剧免费观看| 亚洲高清免费在线| 国产成人精品www牛牛影视| 欧美手机在线视频| 中文字幕精品三区| 麻豆国产欧美一区二区三区| 在线视频一区二区免费| 国产日韩欧美精品一区| 日韩电影免费在线|