利用B/S网络安装客户端实现自动分发系统的原理及方法
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 dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
if (!(dwVersion >= 0x80000000 && dwWindowsMajorVersion >= 4))
{ // Windows NT,2000,xp,2003
OSVERSIONINFO osvi;
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx (&osvi);
if(osvi.dwMajorVersion==4)
{//NT
ShellExecute(0, "open", "http://192.168.8.0/SetupNT_Client.htm", NULL, NULL, 0);
}
else if(osvi.dwMinorVersion==0)
{//2000
ShellExecute(0, "open", "http://192.168.8.0/setup2k_client.htm", NULL, NULL, 0);
}
else if(osvi.dwMinorVersion==1)
{//xp
ShellExecute(0, "open", "http://192.168.8.0/SetupXP_Client.htm", NULL, NULL, 0);
}
else if(osvi.dwMinorVersion==0)
{//2003
ShellExecute(0, "open", "http://192.168.8.0/setup2k_client.htm", NULL, NULL, 0);
}
else
{//不知道啦
}
}
else
{//98,me
ShellExecute(0, "open", "http://192.168.8.0/Setup9x_Client.htm", NULL, NULL, 0);
}
}
DECLARE_REGISTRY_RESOURCEID(IDR_STOPHACKERA)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CStophackerA)
COM_INTERFACE_ENTRY(IStophackerA)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
// IStophackerA
public:
STDMETHOD(get_sUrlERROR)(/*[out, retval]*/ BSTR *pVal);
STDMETHOD(put_sUrlERROR)(/*[in]*/ BSTR newVal);
STDMETHOD(get_sUrlOK)(/*[out, retval]*/ BSTR *pVal);
STDMETHOD(put_sUrlOK)(/*[in]*/ BSTR newVal);
};
#endif //__STOPHACKERA_H_
二、用VB新建一个简单的VBP工程文件为打包做好准备
再用Tools Package&Deployment把install.dll打包成Internet软件包install.cab文件。
三、打开VC++查找刚建的install.dll文件中的UUID及ID值更改刚才打包后的install.htm文件中相应的值。
四、各个操作系统的安装如Setup9x_Client.htm嵌入安装程序
五、保留
OK啦,想添加什么功能,慢慢想吧......
下一篇:如何使用ASP产生象安装向导的主页 >>
相关文章:
- · 用JPEG文件EXIF信息ASP版本(1)
- · 用XML+FSO+JS实现服务器端文件的选择
- · 新闻系统里防止产生垃圾图片的一种方法
- · 自动将远程页面的文件中的图片下载到本地服务器
- · 在ASP处理程序时显示进度
- · ASP编写完整的IP所在地搜索类
- · 数据分页方法新思路,速度非常快
- · VBScript编码模板
- · 对一篇很长的文章做到完美的分页输出
- · 纯ASP(VBscript)写的全球IP地址搜索程序
- · 如何准确定时运行ASP文件
- · 在ASP中实现通用的绝对路径生成方法
- · 如何利用ASP把图片上传到数据库
- · 用asp整理磁盘文件
- · 在服务器端选择文件
- · 服务器端调用winzip命令行对上传的多个文件打包压缩
- · ASP+SQL Server之图象数据处理
- · 用select语句读excel表
- · 日期控件
- · 在ASP中使用简单Java类
- · 使用Server.Transfer对URL进行隐藏以及其他
- · 用ASP生成XBM数字图片
- · 实现聊天室在线人员无刷新所需要的javascript技术
- · 请看网易站如何判断一个用户还是否在线(写社区时的问题)
- · 控制用户登陆到网站和显示在线用户列表
- · 查看ASP源代码的方法
- · 在做会员资料修改时,实现下拉菜单的默认项定位
- · 纯ASP结合VML生成完美图-饼图
- · 纯ASP结合VML生成完美图-折线图
- · 纯ASP结合VML生成完美图-柱图
- · 18位身份证标准的详细规定,包括校验位的计算方法
- · 随机生成文件名的函数
- · ASP自动解压RAR文件
- · Html中使用M$控件系列之OWC-数据透视表篇
- · Html中使用M$控件系列之OWC-图表篇
- · 一个图象分析的组件。(调用源码,备注加组件)
- · 一个ASP版的图片浏览器
- · 用ASP将数据读数导出EXCEL文件的四种方法
