#define SN_HSREGISTER_ROOT HKEY_LOCAL_MACHINE
#define SN_HSREGISTER_PATH TEXT("Software\\MobileXP\\WireLessPhone")
#define SN_WHITElIST_STATE TEXT("IsWhiteListOn")
void ChangeRegOfHs(TCHAR *pN,DWORD value)
Run:
DWORD WhiteListState = 1;
ChangeRegOfHs(SN_HSREGISTER_VALUE, WhiteListState);
End:
DWORD WhiteListState = 0;
ChangeRegOfHs(SN_HSREGISTER_VALUE, WhiteListState);
void ChangeRegOfHs(TCHAR *pN,DWORD value)
{
HKEY hKey = NULL;
if(ERROR_SUCCESS == RegOpenKeyEx(SN_HSREGISTER_ROOT,SN_HSREGISTER_PATH,0,0,&hKey))
{
RegSetValueExW(hKey,pN,NULL,REG_DWORD,(BYTE*)&value,sizeof(DWORD));
}
RegCloseKey(hKey);
}
BOOL processOfPortect = FALSE;
DWORD dwWhiteListFlag = 0;
processOfPortect = FindProcess(L"protect.exe");
RegistryGetDWORD(HKEY_LOCAL_MACHINE,SN_HSREGISTER_PATH,SN_WHITElIST_STATE,&dwWhiteListFlag);
BOOL FindProcess(TCHAR* ptProcessName)
{
HANDLE hSnapShot;
PROCESSENTRY32 proEntry;
BOOL bRet = FALSE;
TCHAR *tDesProcess = NULL;
TCHAR *tEnumProcess = NULL;
//DWORD dError = 0;
memset(&proEntry,0,sizeof(PROCESSENTRY32));
proEntry.dwSize = sizeof(PROCESSENTRY32);
tDesProcess = (TCHAR*)wcsupr( _wcsdup(ptProcessName) );
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS|TH32CS_SNAPNOHEAPS,0);
if(INVALID_HANDLE_VALUE ==hSnapShot)
{
goto exit;
}
bRet = Process32First(hSnapShot,&proEntry);
if(false ==bRet)
goto exit;
while(bRet)
{
//static int ii = 0;
//ii++;
tEnumProcess = (TCHAR*)wcsupr( _wcsdup(proEntry.szExeFile) );
//printf("第 %d process is>>>>%S\r\n",ii,tEnumProcess);
if (wcsstr(tDesProcess,tEnumProcess) != NULL)
{
goto exit;
}
free(tEnumProcess);
tEnumProcess = NULL;
bRet = Process32Next(hSnapShot,&proEntry);
}
//bRet = TRUE;
exit:
if(tEnumProcess)
free(tEnumProcess);
if(tDesProcess)
free(tDesProcess);
if(TRUE ==bRet && INVALID_HANDLE_VALUE !=hSnapShot)
CloseToolhelp32Snapshot(hSnapShot);
return bRet;
}
#define SN_HSREGISTER_PATH TEXT("Software\\MobileXP\\WireLessPhone")
#define SN_WHITElIST_STATE TEXT("IsWhiteListOn")
void ChangeRegOfHs(TCHAR *pN,DWORD value)
Run:
DWORD WhiteListState = 1;
ChangeRegOfHs(SN_HSREGISTER_VALUE, WhiteListState);
End:
DWORD WhiteListState = 0;
ChangeRegOfHs(SN_HSREGISTER_VALUE, WhiteListState);
void ChangeRegOfHs(TCHAR *pN,DWORD value)
{
HKEY hKey = NULL;
if(ERROR_SUCCESS == RegOpenKeyEx(SN_HSREGISTER_ROOT,SN_HSREGISTER_PATH,0,0,&hKey))
{
RegSetValueExW(hKey,pN,NULL,REG_DWORD,(BYTE*)&value,sizeof(DWORD));
}
RegCloseKey(hKey);
}
BOOL processOfPortect = FALSE;
DWORD dwWhiteListFlag = 0;
processOfPortect = FindProcess(L"protect.exe");
RegistryGetDWORD(HKEY_LOCAL_MACHINE,SN_HSREGISTER_PATH,SN_WHITElIST_STATE,&dwWhiteListFlag);
BOOL FindProcess(TCHAR* ptProcessName)
{
HANDLE hSnapShot;
PROCESSENTRY32 proEntry;
BOOL bRet = FALSE;
TCHAR *tDesProcess = NULL;
TCHAR *tEnumProcess = NULL;
//DWORD dError = 0;
memset(&proEntry,0,sizeof(PROCESSENTRY32));
proEntry.dwSize = sizeof(PROCESSENTRY32);
tDesProcess = (TCHAR*)wcsupr( _wcsdup(ptProcessName) );
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS|TH32CS_SNAPNOHEAPS,0);
if(INVALID_HANDLE_VALUE ==hSnapShot)
{
goto exit;
}
bRet = Process32First(hSnapShot,&proEntry);
if(false ==bRet)
goto exit;
while(bRet)
{
//static int ii = 0;
//ii++;
tEnumProcess = (TCHAR*)wcsupr( _wcsdup(proEntry.szExeFile) );
//printf("第 %d process is>>>>%S\r\n",ii,tEnumProcess);
if (wcsstr(tDesProcess,tEnumProcess) != NULL)
{
goto exit;
}
free(tEnumProcess);
tEnumProcess = NULL;
bRet = Process32Next(hSnapShot,&proEntry);
}
//bRet = TRUE;
exit:
if(tEnumProcess)
free(tEnumProcess);
if(tDesProcess)
free(tDesProcess);
if(TRUE ==bRet && INVALID_HANDLE_VALUE !=hSnapShot)
CloseToolhelp32Snapshot(hSnapShot);
return bRet;
}