实验: 程序自删除

最初是按照 FILE_FLAG_DELETE_ON_CLOSE的线索做的实验,  后来发现原始exe可以删除,但是克隆exe删不掉.

原因是进程在运行, 无法被删除.

 

后来在codeproject上看到释放.bat文件来删除主程序的方法. 这个方法实现, 思路明了. 实验的效果也不错.

 

Console工程:

包含console, dialog, sdi, mdi自删除工程的下载点:

http://download.csdn.net/source/3012716


<2012_0617>

在Unicode字符集下编译不过, 找到UUID的新实现.

original url from : http://www.dotblogs.com.tw/larrynung/archive/2011/10/13/42376.aspx

{
	_TUCHAR *guidStr = NULL;
	std::wstring strW;

	GUID *pguid = new GUID;

	CoCreateGuid(pguid);

	// Convert the GUID to a string
	UuidToString(pguid, (RPC_WSTR*)&guidStr);
	delete pguid;
	strW = std::wstring(guidStr);
	return strW.c_str();
}


修正后的GenerateUniquePrefixName()实现

{
	CString strUnique;
	GUID guid;
	HRESULT hRc = CoCreateGuid(&guid);
	if(S_OK != hRc)
	{
		strUnique.Format(_T("%d"), rand());
	}
	else
	{
		_TUCHAR * str = NULL;
		UuidToString(&guid, (RPC_WSTR*)&str);
		strUnique = str;

		RpcStringFree((RPC_WSTR*)str);
	}
	return strUnique;
}

现在用CString感觉很别扭了~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值