// 收费软件合法性验证
bool LicenseVerify(void)
{

	TCHAR pszFileName[MAX_PATH] = {0};
    GetModuleFileName(0, pszFileName, MAX_PATH);            // 当前进程EXE的文件名
    MYSTORE_VERIFY_CONTEXT mystore = {0};
    DWORD dwRet = MyStoreVerify(pszFileName, &mystore);     // 验证此文件是否合法

	// 验证合法
	if(dwRet==0){

		// 过期
		if(mystore.Expired){

			return false;
			
		}else{

			// 免费
			if((mystore.Reserved[0]&0x40)==0x40){

				return false;
			
			// 收费
			}else{

				return true;
			
			}
		
		}

	}

	return false;

}
Exemplo n.º 2
0
BOOL F_LicenseProtect()
{
	wchar_t pszFileName[MAX_PATH] = {0};
	GetModuleFileName(0, pszFileName, MAX_PATH);            // 当前进程EXE的文件名
	MYSTORE_VERIFY_CONTEXT mystore = {0};
	DWORD dwRet = MyStoreVerify(pszFileName, &mystore);     // 验证此文件是否合法

	bool	bRlt	=	false;

	switch(dwRet)
	{
	case 0:
		{
			//验证结果为: 合法
			//  检验是否超过试用期
			//  决定让应用程序继续运行

			RETAILMSG(1, (L"验证结果为: 合法, LicenseValid:%u, Expired:%u, 试用期终止日期:%u\n", 
				mystore.LicenseValid, mystore.Expired, mystore.ExpireDate ));

			if(mystore.Expired)
			{
				// 超过试用期
				// ...
			}
			else
			{
				// 未超过试用期
				// ...
				bRlt	=	true;
			}
		}
		break;
	case 1:
		{
			//验证结果为: 打开pszFileName文件失败
			// ...退出应用程序
			RETAILMSG(1, (L"验证结果为: 打开pszFileName文件失败\n"));
		}
		break;
	case 2:
		{
			//验证结果为: 打开License文件失败
			// ...退出应用程序
			RETAILMSG(1, (L"验证结果为: 打开License文件失败\n"));
		}
		break;
	case 3:
		{
			//验证结果为: 验证失败
			// ...退出应用程序
			RETAILMSG(1, (L"验证结果为: 验证失败\n"));
		}
		break;
	case 4:
		{
			//验证结果为: 序列号获取失败
			// ...退出应用程序
			RETAILMSG(1, (L"验证结果为: 序列号获取失败\n"));
		}
		break;
	}

	return	bRlt;
}