www.gusucode.com > 一些VC++加密算法+实例源码源码程序 > 一些VC++加密算法+实例源码/优化后的加密注册模块/优化后的加密注册模块/inventory(optimized)/ArkoSetSecurity.cpp

    /* SetSec.cpp
 xschen, 31, july.
*/

#include "stdafx.h"

#include "am_lv1.h"

#include "ErrorReport.h"

#include "EndAuthServer.h"

/////////////////////////////////////////////////////////////////////////////

long QueryEndStatus()   //the return value is zero when failed, ID when succeeded
{
	long lg;
	LPCTSTR lpSubKey = ArkoAuthReg;
	HKEY hk;
	LPTSTR lpValueName = ArkoAuthValueName;
	DWORD type;
	long status;
	DWORD cbData;
	
	lg = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpSubKey, NULL, KEY_READ, &hk);
	if(lg)
		return 0;
	
	lg = RegQueryValueEx(hk, lpValueName, NULL, &type, (LPBYTE)&status, &cbData);
	if(lg)
		return 0;

	return status;
}

HRESULT SetEndSecurity(	long serviceID)
{
	if(QueryEndStatus()==0){

		return S_OK;
	}
	

	HRESULT hr;
    IEndServer *pEndCheck=NULL;
/********************************************************/

	wchar_t end_server[16];
	char * ipaddr = new char [IP_LEN];
	unsigned int ipsize = IP_LEN;
	c_GetIpAddr(ipaddr,&ipsize);
	mbstowcs(end_server, ipaddr, 16); 
	free ( ipaddr ) ;
	COSERVERINFO cs;
	memset(&cs, 0, sizeof(cs));
	cs.pwszName = end_server;

	MULTI_QI qi[1];
	memset(qi, 0, sizeof(qi));
	qi[0].pIID = &IID_IEndServer;

	hr = CoCreateInstanceEx(
		CLSID_EndServer,
		NULL,
		CLSCTX_SERVER,
		&cs,
		1,
		qi);
	if(FAILED(hr)) {
//		CallEventServer(7501, "Dcom failed to connect to end system !", 15, "");
		return hr;
	}
	pEndCheck = (IEndServer*)qi[0].pItf;
/********************************************************/
	hr = pEndCheck->ArkoSetSecurity(serviceID);
	if ( hr > 0 ) pEndCheck->Release () ;
	return hr;
}