#include "StdAfx.h" #include "EncryptionMgr.h" #include "LogMgr.h" #include "MsgBox.h" #include "winioctl.h" #ifdef __USE_SUPER_DOG__ #pragma comment( lib, "KernelMode.lib") CKernelMode gKernelMode; #endif #define LEFT_DAYS_ALAM 7 //剩余几天提示 CEncryptionMgr *gEncryptionMgr = new CEncryptionMgr; CEncryptionMgr::CEncryptionMgr(void) { m_LeftDays = 0;//剩余的天数 m_bRunAtNoteBook = false;//是否在笔记本上运行 } CEncryptionMgr::~CEncryptionMgr(void) { } void CEncryptionMgr::Ini() { m_CurHardDiskSerialNum = GetHardDiskSerialNum(); set NoteBookHardDiskSerialSet; NoteBookHardDiskSerialSet.insert("2cc413dd");//k2450 笔记本 NoteBookHardDiskSerialSet.insert("4a410fe7");//t420 笔记本 //NoteBookHardDiskSerialSet.insert("ebfac14d");//T460S 笔记本 //笔记本 if(NoteBookHardDiskSerialSet.count(m_CurHardDiskSerialNum)) { m_bRunAtNoteBook = true; } } //获取硬盘序列号(C盘所在硬盘) CString CEncryptionMgr::GetHardDiskSerialNum() { CString id; char Name[MAX_PATH]; DWORD serno; DWORD length; DWORD FileFlag; char FileName[MAX_PATH]; BOOL Ret; Ret = GetVolumeInformation("c:\\", Name, MAX_PATH, &serno, &length, &FileFlag, FileName, MAX_PATH); if (Ret) id.Format( "%x", serno); return id; } #if 1 /* code:530001 设备上没有发现加密狗 code:530002 读取Binary文件错误 code:530003 Binary文件ID和加密狗ID不匹配 code:530004 年份过期 code:530005 月份过期 code:530006 天过期 code:530007 磁盘驱动器序列号不匹配 */ //检查锁定状态(锁定返回false) bool CEncryptionMgr::CheckLockState() { #ifndef __USE_SUPER_DOG__ return true; #endif //笔记本 if(m_bRunAtNoteBook) { return true; } int code = gKernelMode.CheckState(); //到期时间还剩n 天 if(code>100 && code<=(100+LEFT_DAYS_ALAM)) { m_LeftDays = code-100; } else if(code==0 || code>(100+LEFT_DAYS_ALAM)) { m_LeftDays = 0;//剩余的天数 } else if(code>0 && code!=7)//其他错误(不要检查磁盘序列号) { m_LeftDays = 0;//剩余的天数 CString s; s.Format(_T("设备使用授权有问题 ,请联系供应商 (code :53000%d)"),code); CMsgBox MsgBox; MsgBox.Show(s); return false; } //检查剩余的天数(10 天以内提示警告) CheckLeftDays(); return true; } //检查剩余的天数(10 天以内提示警告) void CEncryptionMgr::CheckLeftDays() { if(m_LeftDays>0) { CString s; s.Format("设备授权还有%ld 天到期,请联系供应商",m_LeftDays); CMsgBox MsgBox; MsgBox.Show(s); } } #endif