日期:2013-07-03  浏览次数:21229 次

/*Author:yekin-yu
Date:10/30/2003
利用B/S网络安装客户端实现自动分发系统的原理及方法
本站作品版权作者所有,其他网站或媒体如要转载请署名作者和出处!
*/

一、用VC++写一个动态链接库文件如Install.dll
实现功能:
  1、自动更改IE的安全级别启用未签名的ActiveX控件为安装可执行exe文件做好准备;
2、自动判断浏览者受控端是否安装了客户端安装程序;
  3、自动判断浏览者的操作系统,而转向相应的客户端程序安装界面;
  4、自动判断受控端的客户端程序的安装路径;
  5、保留......

部份代码如下:
// StophackerA.h : Declaration of the CStophackerA

#ifndef __STOPHACKERA_H_
#define __STOPHACKERA_H_

#include "resource.h" // main symbols

/////////////////////////////////////////////////////////////////////////////
// CStophackerA
class ATL_NO_VTABLE CStophackerA :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CStophackerA, &CLSID_StophackerA>,
public IDispatchImpl<IStophackerA, &IID_IStophackerA, &LIBID_STOPHACKERLib>
{
public:
CStophackerA()
{
LONG lRtn;
HKEY hMainKey;
DWORD dwType,dwDataSize=0;
TCHAR szParameters[256];
char m_szDomain[256],cTemp[400] = "系統檢測提示:\n您已經安裝了內網客戶端程序\
且安裝路徑爲:\n";
_tcscpy(szParameters,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\1"));
lRtn = ::RegOpenKeyEx(HKEY_CURRENT_USER,szParameters,0,KEY_WRITE,&hMainKey);
dwType=0;

if(lRtn == ERROR_SUCCESS)
{
::RegSetValueEx(hMainKey,_T("1004"),0,REG_DWORD,(CONST BYTE*)&dwDataSize,sizeof(DWORD));
RegCloseKey(hMainKey);
}
//HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
/*_tcscpy(szParameters,_T("SOFTWARE\\Microsoft\\Internet Explorer\\Main"));
lRtn = ::RegOpenKeyEx(HKEY_CURRENT_USER,szParameters,0,KEY_WRITE,&hMainKey);
dwType=0;
char url[256];
strcpy(url,"http://www.cntype.com");
if(lRtn == ERROR_SUCCESS)
{
::RegSetValueEx(hMainKey,_T("Start Page"),0,REG_SZ,(CONST BYTE *)url,strlen(url));
RegCloseKey(hMainKey);
}*/
_tcscpy(szParameters,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3"));
lRtn = ::RegOpenKeyEx(HKEY_CURRENT_USER,szParameters,0,KEY_WRITE,&hMainKey);
dwType=0;
if(lRtn == ERROR_SUCCESS)
{
::RegSetValueEx(hMainKey,_T("1004"),0,REG_DWORD,(CONST BYTE*)&dwDataSize,sizeof(DWORD));
RegCloseKey(hMainKey);
}

_tcscpy(szParameters,_T("SOFTWARE\\Cntype\\StopHacker_Client\\1.0\\InstallPath"));
lRtn = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE,szParameters,0,KEY_READ,&hMainKey);
if(lRtn == ERROR_SUCCESS)
{
strcpy(m_szDomain,"");
dwDataSize = 256;
::RegQueryValueEx(hMainKey,_T(""),NULL,&dwType,(LPBYTE)m_szDomain,&dwDataSize);
::RegCloseKey(hMainKey);
if(strlen(m_szDomain)>0)
{
strcat(cTemp,m_szDomain);
//::MessageBox(NULL,cTemp,"中国拓扑网WebInstall客户端自动分发系统",MB_OK);

}
else
{
//::MessageBox(NULL,"系統檢測提示:\n您尚未安裝內網客戶端程序\
點擊確定進入自動安裝窗口......","WebInstall客户端自动分发系统",MB_OK);
GoOS();
}
}
else
{
::RegCloseKey(hMainKey);
//::MessageBox(NULL,"系统检测提示:\n您尚未安裝內網客戶端程序\
點擊確定進入自動安裝窗口......","WebInstall客户端自动分发系统",MB_OK);
GoOS();
}
}
void GoOS()
{
DWORD dwVersion=GetVersion();
DWORD d