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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? install.cpp

?? FastCopy 利用緩沖技術(shù)加快文件拷貝
?? 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偺僷僗庢?zhèn)鑿o偟
	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 昩埲撪側(cè)傜丄摨堦僞僀儉僗僞儞僾偲傒側(cè)偡
		((*(_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); 昁梫側(cè)偝偦
		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));

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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久99精品一区| 亚洲激情成人在线| 国产精品私人自拍| 日韩激情在线观看| eeuss鲁一区二区三区| 日韩一区二区三区四区| 亚洲一级在线观看| 成人看片黄a免费看在线| 欧美久久一区二区| 亚洲欧美色一区| 国产91丝袜在线18| 久久麻豆一区二区| 秋霞午夜av一区二区三区| 在线观看亚洲精品视频| 国产精品久久久久影院| 狠狠色丁香久久婷婷综| 欧美电影一区二区三区| 一区二区久久久久久| 99热在这里有精品免费| 国产欧美一区二区在线| 久久不见久久见免费视频1| 欧美日韩三级视频| 一区二区在线观看视频| 精品欧美一区二区三区精品久久| 亚洲同性同志一二三专区| 国产一本一道久久香蕉| 精品精品欲导航| 美女一区二区三区| 日韩欧美国产不卡| 美女视频免费一区| 欧美成人精精品一区二区频| 人人狠狠综合久久亚洲| 欧美欧美欧美欧美| 日韩精彩视频在线观看| 777久久久精品| 秋霞影院一区二区| 精品盗摄一区二区三区| 久久精品72免费观看| 精品久久人人做人人爱| 国产真实乱偷精品视频免| 久久香蕉国产线看观看99| 国产成人在线视频网站| 18欧美乱大交hd1984| 一本大道久久a久久综合婷婷| 亚洲女爱视频在线| 欧美日韩一区视频| 美女视频黄a大片欧美| 精品国产一区二区三区忘忧草| 国产精品羞羞答答xxdd| 中文字幕国产一区二区| 色综合视频一区二区三区高清| 亚洲欧美国产高清| 欧美日本乱大交xxxxx| 免费成人小视频| 中文字幕欧美国产| 在线免费观看日韩欧美| 三级欧美韩日大片在线看| 日韩欧美国产综合一区| 成人国产精品免费观看| 亚洲综合在线五月| 精品欧美一区二区三区精品久久| 成人网在线播放| 亚洲综合久久av| 精品福利一区二区三区免费视频| 成人短视频下载| 天涯成人国产亚洲精品一区av| 欧美精品一区二区三区蜜桃视频| www.色精品| 日韩成人免费看| 国产精品久久一卡二卡| 9191精品国产综合久久久久久| 国产一区三区三区| 亚洲综合一二区| 久久美女高清视频| 精品视频全国免费看| 国产精品系列在线观看| 亚洲成年人影院| 中文字幕国产精品一区二区| 91精品国产综合久久久久久久久久| 国产成人免费av在线| 午夜欧美电影在线观看| 国产精品久久久久影院色老大| 69久久99精品久久久久婷婷| av爱爱亚洲一区| 狠狠色2019综合网| 青青草成人在线观看| 亚洲美女在线一区| 欧美激情中文字幕| 精品欧美乱码久久久久久1区2区| 欧美色综合久久| 成人激情视频网站| 国产一区 二区 三区一级| 日韩国产一区二| 亚洲一区二区视频| 亚洲男女一区二区三区| 日本一区二区三区四区| 精品欧美久久久| 日韩美女视频在线| 欧美一级理论片| 欧美美女一区二区| 在线免费观看一区| 亚洲国产精华液网站w| 日韩女优av电影在线观看| 69久久99精品久久久久婷婷 | 91成人在线免费观看| 国产成人鲁色资源国产91色综| 美国十次综合导航| 免费成人你懂的| 日本强好片久久久久久aaa| 亚洲成人av电影在线| 亚洲成人黄色影院| 亚洲成人动漫av| 日精品一区二区三区| 亚洲bdsm女犯bdsm网站| 亚洲午夜久久久久| 亚洲高清久久久| 性做久久久久久久免费看| 一区二区三区高清在线| 亚洲综合在线视频| 午夜电影网亚洲视频| 午夜av电影一区| 麻豆精品精品国产自在97香蕉| 蜜臀久久99精品久久久久久9| 日韩和的一区二区| 久久91精品久久久久久秒播| 久久国产免费看| 国产麻豆精品视频| 国产福利精品一区二区| 国产aⅴ综合色| 99这里只有久久精品视频| 91女厕偷拍女厕偷拍高清| 色就色 综合激情| 欧美精品自拍偷拍| 精品国产三级a在线观看| 国产婷婷色一区二区三区| 欧美激情一区二区三区在线| 亚洲人成小说网站色在线 | 国产精品伦一区| 亚洲丝袜美腿综合| 婷婷亚洲久悠悠色悠在线播放| 美女网站色91| 成人h动漫精品| 精品视频全国免费看| 欧美精品一区男女天堂| 国产精品久久久久一区| 天天操天天综合网| 国产麻豆精品在线| 欧美网站大全在线观看| 日韩欧美一区二区久久婷婷| 国产精品人妖ts系列视频| 午夜久久久久久电影| 国产美女在线精品| 欧美日韩免费电影| 久久九九影视网| 亚洲一二三区不卡| 高清av一区二区| 欧美日韩免费不卡视频一区二区三区| 精品国产伦一区二区三区观看方式 | 亚洲综合一二区| 国产一区二区剧情av在线| 色综合久久六月婷婷中文字幕| 欧美放荡的少妇| 日韩一区欧美小说| 久久精工是国产品牌吗| 色噜噜狠狠成人中文综合| 久久久久免费观看| 午夜欧美电影在线观看| 91最新地址在线播放| 欧美成人乱码一区二区三区| 亚洲一级二级在线| 国产成人精品免费视频网站| 9191精品国产综合久久久久久| 国产精品电影一区二区三区| 久久国产剧场电影| 欧美日本一区二区三区| 亚洲欧美日韩电影| 丁香桃色午夜亚洲一区二区三区| 在线成人免费视频| 亚洲精品午夜久久久| 大白屁股一区二区视频| 欧美videos大乳护士334| 亚洲一区二区三区四区在线免费观看| 大胆欧美人体老妇| 久久精品欧美日韩| 国产在线精品一区二区| 欧美一级片在线看| 五月天激情综合| 欧美日韩国产在线播放网站| 亚洲欧洲日韩综合一区二区| 国产成人亚洲精品青草天美| 日韩欧美国产午夜精品| 日产精品久久久久久久性色| 欧美三级电影网站| 亚洲一级在线观看| 欧美色综合网站| 三级精品在线观看| 欧美一区二区视频在线观看2022| 午夜欧美视频在线观看| 欧美精品在线一区二区三区| 三级欧美韩日大片在线看|