Archive for 11月, 2006

Writing NT service using VB6 Without NTSVC.OCX

Writing NT service using VB6 Without NTSVC.OCX
不用NTSVC.OCX,照样能用VB做NT Service!来自http://www.smsoft.ru的开源代码。
‘**************************************************
‘* NT Service sample *
‘* http://www.smsoft.ru *
‘* e-mail: sm@smsoft.ru *
‘* The code is freeware. It may be used *
‘* in programs of any kind without permission *
‘**************************************************
点击此处下载源代码
Writing NT service using VB6
This sample program was built to show how to program Windows NT/2000/XP services using Visual Basic. 
Of course, you can use free NTSVC.OCX control from Microsoft to create your service,
and this way is simple and reliable, but it has one disadvantage: you can’t set
“Unattended execution” option for it. You can’t use any OCX controls when ”Unattended
execution” is set. 
This sample is written using VB6 without any external components. It takes into account
multithreading problems which seriousely limit VB functionality. Some used API functions are declared in type library, and it is a workaround.
As the service was compiled for unattended execution, it has no visual interface.
Use NT Event Viewer to read messages written by the service to the Application Log. 
The functional part of service (which is absent in this sample) must be object-oriented
and event-driven. All events must be processed during few seconds, otherwise the service will be unable to respond on requests from the Service Dispatcher.
See also:
Microsoft Knowledge Base Q137890, Q170883, Q175948,
http://msdn.microsoft.com/library/techart/msdn_ntsrvocx.htm,
http://msdn.microsoft.com/library/periodic/period98/service.htm,
http://msdn.microsoft.com/library/periodic/period98/vb98j1.htm
http://vbwire.com/advanced/howto/service.asp 
http://vbwire.com/advanced/howto/service2.asp
Matthew Curland’s article ”Create Worker DLL Threads” in the 06/99 issue of Visual Basic
Programmer’s Journal.

30 September 2001
Update:
1. All API functions calls except GetVersionEx changed to Unicode versions, in code
and in type library. Added new Enum members to type library to support new Windows 2000
control codes.
2. Added MsgWaitObj function to prevent blocking of messages processing. All calls of
WaitForSingleObject and WaitForMultipleObjects in Sub Main replaced with MsgWaitObj.

——————————————————————
公告栏
———————————
留言板
———————————
看广告玩游戏送QQ币

(转)全面认识Windows XP各种服务

全面认识Windows XP各种服务 
  每次开机,Windows XP都要启动80多个服务,而一般用户对这些在后台运行的服务所知甚少。它们究竟是干什么的?我是否真的需要所有的这些服务?本文将告诉你哪些服务是必须运行的,哪些服务是不必运行的。去掉那些不需要启动的服务一方面会提高电脑的运行速度,另一方面也减少了被黑客攻击的可能。
  
  近两年来,很多人已经亲身体验到网络蠕虫的危害,比如2003年8月发作的冲击波(Worm.Blaster)以及2004年5月发作的震荡波(Worm.Sasser)。这两个病毒都属于网络蠕虫,它们利用了Windows服务中的漏洞来进行传播和破坏。冲击波(Worm.Blaster)病毒利用了RPC(Remote Procedure Call,远程过程调用)服务的漏洞,而RPC服务正是Windows XP必须运行的服务之一。Blaster病毒发作时,你的机器会在60秒钟内自动关闭。而Sasser病毒则利用了Windows的LSASS(Local Security Authority Subsystem Service,安全性授权子系统服务)服务进行攻击和传染。按照反病毒机构的说法,如果不加以防范,这些网络蠕虫可以在1小时内通过Internet传遍地球上的所有电脑。
  
  问题的关键在于实际上我们离不开这些服务,Windows XP的很多功能都是通过这些服务来实现的。简单地讲,你可以把这些服务理解为在后台完成系统任务的程序,比如获取自动更新或者管理打印任务。与一般应用程序的最大区别是它们都是在“后台”运行的,因此你基本上感知不到它们的存在。
  
  为了实现Windows XP的各种功能,Microsoft会在安装Windows系统时对这些服务进行自动配置。Windows会把其中的一些服务设置为“开机自动运行”状态,另一些则是在需要时再加载,还有一些服务则只有当用户选择加载时才会加载。绝大多数电脑并不需要运行所有的“开机自动运行”服务,这些不必要的服务会增加系统被攻击的危险,还会占用宝贵的系统资源。如果想看到所有服务的运行状态,你可以依次打开“控制面板” “管理工具” “服务”(如图1所示)。
   
 
  图一

  
  理解这些服务
  
  在图1中,你可以看到每一个服务都有以下几个属性:名称、描述、状态、启动类型、登录身份、依存关系。有些属性没有在图1中显示,你可以用鼠标双击某个服务,就能看到更多的属性。比如Task Scheduler服务的作用是“使用户能在此计算机上配置和制定自动任务的日程。如果此服务被终止,这些任务将无法在日程时间里运行。如果此服务被禁用,任何依赖它的服务将无法启动。”默认状态下,Task Scheduler服务的启动状态是“自动”,它会随着Windows的启动而启动。而在依存关系中,你可以看到它依赖于Remote Procedure Call (RPC)服务。Task Scheduler服务的可执行文件的路径是“C:\WINDOWS\System32\svchost.exe -k netsvcs”,因此它在任务管理器中的进程名就是“svchost.exe”,由于有好几个服务都是用svchost.exe来调用的,因此你会在任务管理器中看到多个“svchost.exe”进程(如图2所示)。
   
 
  图二

  
  如果你重新安装一份Windows XP Professional Service Pack 2的话,你会发现一共安装了79个系统服务:34个服务会自动运行,38个服务会在需要时启动,只有7个服务没有被激活。如果你安装的是Windows XP或者Windows XP SP1,它总共会安装77个系统服务,其中34个服务会自动运行,41个服务会在需要时启动,只有2个服务没有被激活。实际上在多数情况下,有大约20个自动运行的服务是不必非要运行的,关掉它们会提高系统运行效率和安全性。
  
  潜在危险
  
  也许你对Windows服务所带来的安全性危险还没有足够的认识,由于这些服务与系统的核心相关并拥有各种权限,因此一旦被不法份子掌握,很可能造成操作系统崩溃。为了尽可能地保护你的电脑不受侵害,关闭那些不需要的服务是很有必要的。而这样做还能减少系统资源占用,提高系统运行效率,何乐而不为呢?让我们先利用一个工具来查看一下哪些服务是可以从外部访问到的,来自www.nmap.org(现在已改为www.insecure.org)的nmap工具可以对端口进行扫描(如图3),从而检查出某台机器上对外开放的服务。另一款免费扫描工具SuperScan v4.0(http://www.foundstone.com/resources/freetools.htm)也可以帮助你(如图4)。
   
 
  图三
   
  图四

  
  新安装的Windows XP通常有5个开放端口,SP1也是如此,到了SP2,Microsoft加强了对端口的保护,你只能找到三个开放端口(如果没有启动防火墙的话)。而如果你打开了SP2的防火墙,端口扫描器甚至无法扫描出任何结果。不过没有什么防火墙是万能的,使用防火墙并关闭不必要的服务,电脑的安全性才会更有保障。
  
  服务管理工具
  
  除了通过“控制面板” “管理工具” “服务”来查看服务之外,还有很多种其他的方式可以对Windows服务进行管理。在命令行方式下,你可以使用sc.exe(Service Control的缩写)来管理服务,该命令需要参数才能运行,常用的运行参数有:sc.exe query(显示所有的服务一览表);sc.exe queryex(显示更多的状态信息,比如进程ID和设置标记);sc.exe query state=all(显示所有安装的服务)。如果不加参数运行sc.exe,它会显示各个参数选项的说明。Sc.exe的最大作用是可以启动或关闭某个服务,或者将某个服务发送到运行队列。在本文的后面我们将教你如何利用sc.exe和自动脚本来配置这些服务。
  
  另一个命令netstat―可以让Windows XP显示当前所有被激活的网络连接。使用默认方式安装的Windows XP SP2会存在三个开放端口的服务,分别是Epmap(端口135)、Microsoft-ds(端口445)和Netbios-ssn(端口139)。TCPview(http://www.sysinternals.com/ntw2k/source/tcpview.shtml)是另一款免费的网络监测工具,它与Windows XP自带的Netstat功能类似,但提供了图形化的界面(如图5所示)。
   
 
  图五

  
  自动启动的服务
  
  使用上述各种工具,你就能查阅有关Windows服务的各种信息。首先让我们把注意力集中在默认状态下被Windows设置为随电脑自动启动的那34个服务。为了找出优化的办法,我们需要先了解一下它们的作用。一般而言,我们可以按照功能将这34个服务分为几大类:联网、安全、错误处理、通信和易用性。
  
  联网
  
  一台Windows PC要想正确连接网络,需要在后台运行很多程序。Workstation服务用于创建与服务器的连接;TCP/IP NetBIOS Helper服务提供了对“TCP/IP 上 NetBIOS (NetBT)”服务以及 NetBIOS 名称解析的支持;Computer Browser服务维护网络上计算机的更新列表,并将列表提供给计算机浏览,它还管理文件和打印机共享信息;DHCP Client服务通过注册和更改IP地址以及DNS名称来管理网络配置;DNS Client服务为计算机解析IP地址和缓冲域名系统(DNS);如果你想要通过网络远程操作注册表,就必须打开Remote Registry服务;如果想要共享文件和打印机,则需要启动Server服务;Windows Time服务可以维护在网络上的所有客户端和服务器的时间和日期同步。
  
  安全
  
  还有些服务与PC安全性相关。Automatic Updates服务能够自动搜寻最新的Windows XP更新并从Microsoft的服务器进行下载和安装;IPSEC Services服务管理 IP 安全策略以及启动 ISAKMP/Oakley (IKE) 和 IP 安全驱动程序;Secondary Logon服务可以允许普通身份用户执行一些需要管理员权限的操作;Security Center是Windows XP SP2新增的一项服务,用于管理Windows防火墙、Windows更新和病毒扫描;System Restore Service服务则用来创建和恢复系统的还原点。
  
  通信
  
  各个程序之间和操作系统各个组件之间的通信都要依赖于一些重要的通信服务。DCOM 服务器进程启动器是Windows XP SP2引入的一个新服务,它可以让程序与另一个程序进行协作;因冲击波(Worm.Blaster)病毒的发作而鼎鼎大名的Remote Procedure Call(RPC)服务也是Windows所不可缺少的通信服务;Distributed Link Tracking Client服务能在计算机内 NTFS 文件之间保持链接或在网络域中的计算机之间保持链接;Windows Management Instrumentation服务提供统一的界面和对象模式以便访问有关操作系统、设备、应用程序和服务的管理信息。
  
  错误处理
  
  错误处理也是Windows服务的一项重要职能:Error Reporting Service负责对应用程序在非标准环境下运行时的错误进行记录、识别和处理。
  易用性
  
  Microsoft也通过服务来实现Windows的易用性,比如XP的统一界面、Plug and Play 自动硬件识别和安装、无线网络的自动配置(Wireless Zero Configuration服务)等。Windows Audio 服务管理基于Windows程序的音频设备;Shell Hardware Detection服务可以让Windows在插入CD或DVD光盘时自动识别里面的内容并启动相应的软件进行播放;Task Scheduler服务则允许你在计算机上配置和制定自动任务的日程;而Logical Disk Manager服务会监测和监视新硬盘驱动器并向逻辑磁盘管理器管理服务发送卷的信息以便配置。
  
  如何优化
  
  不必要的后台服务占用了宝贵的系统资源,并给你的电脑带来了安全风险,关掉它们可以让电脑运行得更快、更安全。对于一般用户而言,Windows服务显得相当复杂,但只要遵循一定的优化规则,你也完全可以轻松地完成这项工作。首先关闭所有你不需要的服务,然后保证必要的服务都处于正常启动状态。要注意的是:当你对Windows服务进行重新配置时,你是在对操作系统的核心进行操作,所以要特别小心。在做任何改动之前,你都要对重要的数据进行备份,最好能够对系统分区进行一次完整地备份(比如用ghost程序)。如果你不想亲自完成这项优化工作,也有个偷懒的办法,那就是利用我们后面将要讨论的脚本自动进行优化。
  禁用哪些服务
  
  如果你的Windows XP还没有升级到SP2,首先你可以禁用Messenger服务和Alerter服务,这两项服务原先是为管理员发布消息和错误警报而设计的,实际上很少被用到(尤其是对于家庭用户就更是没用了),反而会被垃圾信息发送者和黑客滥用。如果你经常收到弹出的消息窗口向你推销某种商品,那正是Messenger服务惹的祸。关闭服务的方法是依次打开“控制面板” “管理工具” “服务”,双击某个想要关闭的服务或者选中某个服务后按右键选择“属性”,然后在服务的属性窗口中将它的启动类型改为“已禁用”,这样在下次电脑启动后它们就不会被自动启动了。如果你的Windows XP已经升级到SP2,这两个服务是会被自动禁用的,不过你最好检查一下,如果没有禁用的话就将它们禁用。
  
  接下去可以考虑禁用的服务是Error Reporting Service,它会搜集来自其他服务和应用程序的错误消息。如果你经常碰到系统崩溃,会很熟悉它弹出的错误报告窗口,它允许你把错误发送给Microsoft公司,但实际上多数人都不会选择这样做,所以还是关掉它吧。
  
  Remote Registry服务顾名思义是用于远程操作注册表的,你真的需要进行这种具有相当风险的操作吗?如果没有的话,那还是将它禁用吧。
  
  Task Scheduler服务允许你在计算机上配置和制定自动任务的日程,但并不是所有人都习惯这样安排任务,如果你不想自动对系统进行备份,那就关闭它。你也不必担心你的杀毒软件不能正常自动更新,因为杀毒软件的任务安排通常不是由Task Scheduler服务控制的。
  
  Telnet服务最好也关掉,这项协议会在网络传输中使用明码传递ID和密码,因此很不安全,所以还是关掉为好。
  
  如果有疑问
  
  如果你无法确定某个自动启动的服务是否需要,最好不要将其禁用。在这种情况下,把它们的启动状态改为“手动”是个最好的选择。
  
  还要注意一点,很多服务之间存在着依存关系。比如,如果关闭Remote Procedure Call服务,Task Scheduler服务就无法工作。依次打开“控制面板” “管理工具” “服务”,双击某个想要关闭的服务或者选中某个服务后按右键选择“属性”,在属性窗口中选择“依存关系”选项卡,就可以看到某项服务依赖于哪些其他的服务(如图7所示)。
  
  如果有疑问
  
  如果你无法确定某个自动启动的服务是否需要,最好不要将其禁用。在这种情况下,把它们的启动状态改为“手动”是个最好的选择。
  
  还要注意一点,很多服务之间存在着依存关系。比如,如果关闭Remote Procedure Call服务,Task Scheduler服务就无法工作。依次打开“控制面板” “管理工具” “服务”,双击某个想要关闭的服务或者选中某个服务后按右键选择“属性”,在属性窗口中选择“依存关系”选项卡,就可以看到某项服务依赖于哪些其他的服务(如图7所示)。
   
 

  是否禁用那些易用性服务,你可以根据自己的情况而定,如果你宁愿自己手动去检查和安装Windows补丁,那就可以将Automatic Updates服务关闭。如果你喜欢使用第三方的防火墙,可以将Security Center服务关闭。如果你并不使用无线连接,则可以将Wireless Zero Configuration服务关闭。
  
  必需启动的服务
  
  表格中的带“○”标记的条目表示这些服务如果不被其他服务所依赖的话,也可以将其禁用。禁用这些服务可能会使Windows XP的某些功能无法使用,比如如果禁用Cryptographic Services,就无法支持带有签名的程序,也无法使用安全证书。
  
  如果你特别执着地想知道哪些服务可以被关闭,可以关闭某项服务,然后观察关闭前后Windows XP系统是否能够正常运行,如果一切正常,那就可以将其禁用。试验时比较好的做法是不要将服务禁用,而是把它们的启动状态改为“手动”。我们曾经尝试在一台机器上关闭了所有的服务,只保留了Remote Procedure Call服务。我们发现,操作系统还可以正常启动,你也可以把它当作打字机使用,但其他功能基本上无法使用,操作系统会弹出无数的窗口告诉你没有操作的权限。
  
  安全服务
  
  即便你按照上述的步骤对Windows XP服务进行了“瘦身”,但使用Netstat和Nmap扫描时你仍然会发现三个对外开放的服务:Epmap(端口135)、Microsoft-ds(端口445)和Netbios-ssn(端口139),这三项服务都和网络有关。毕竟我们对Windows XP服务进行“瘦身”并不是为了彻底切断与网络的联系。
  
  Windows XP在默认状态下会打开Netbios和SMB(Server Message Block,服务器信息块),这些协议用于用户共享文件、磁盘、目录和打印机。如果你不需要它们,可以用后面讨论的办法关闭它们。先来看看如何关闭Netbios,打开“控制面板” “网络连接”中的网卡设置窗口,进入TCP/IP设置项的高级设置窗口,在WINS选项卡中选择“禁用TCP/IP上的NetBIOS”,这样一来就可以去掉Netbios-ssn服务(如图8所示)。
   
 

  再来看Endpoint Mapper,它是由DCOM控制的。依次选择“开始” “运行”,然后运行dcomcnfg.exe,在窗口左边依次选择“组件服务” “计算机” “我的电脑”,然后按鼠标右键并在上下文菜单中选择“属性” “默认属性”,取消选择“在此计算机上启用分布式COM (E)”,然后在“默认协议”选项卡中删除所有的协议。这样重新启动之后,你会发现Epmap也不见了。
  
  如果想彻底关闭SMB服务,你需要在注册表中创建一个新的值HKEY_Local_Machine\SYSTEM\CurrentControlSet\Services\NetBT\Paramters\SMBDeviceEnabled,将此值设置为0。
  
  使用自动脚本
  
  如果不想自己一项项地去调整各项服务,可以考虑一下使用预定义好的脚本程序。这里介绍的脚本来自www.ntsvcfg.de,这是一家专注于优化Windows安全配置的德国网站。你需要下载的脚本程序是http://www.ntsvcfg.de/svc2kxp.cmd。下载之后双击该文件即可,它会打开一个Windows命令行窗口(如图9所示),列出了4个服务配置选项:LAN、Standard、ALL、Restore。你可以按数字键进行选择,LAN适用于需要使用局域网的机器,Standard适用于带有Internet连接但没有局域网的独立机器,ALL则使用了该网站讨论的最为激进的优化方案。其中的Standard比较符合本文推荐的优化方案,这个脚本会将Security Accounts Manager、TCP/IP NetBIOS Helper和Windows Management Instrumentation的运行状态改为“手动”。如果你对修改后的效果不满意,可以选择Restore恢复之前的设置。除了不能关闭Netbios之外,这个脚本的自动化程度非常不错。由于该脚本使用了sc.exe来启动和终止服务,如果你的机器上没有sc.exe,可以到http://www.dynawell.com/reskit/microsoft/win2000/sc.zip下载并解压到Windows/System32下即可。
   
 

  更进一步的考虑
  
  如果想要防止黑客入侵,仅仅对Windows服务进行优化是不够的。你仍然需要安装Internet防火墙和防病毒软件,经常更新你的操作系统和应用软件。升级到Windows XP SP2是个好主意,它内置了防火墙,安全性有了不小的进步。如果你对Internet Explorer和Outlook Express并不是非常依赖的话,可以考虑使用其他的网络浏览工具和e-mail客户端,比如基于Mozilla的Firefox和Thunderbird,国产的邮件客户端Foxmail也非常不错,这些软件都可以免费获得。它们通常要比Microsoft的产品更安全,原因很简单,黑客会把注意力集中于最流行的软件。
  
  进行日常工作时使用普通帐户而不是管理员帐户登录是个很好的习惯,不过Microsoft和很多应用软件开发商的疏忽给这种使用习惯带来了不小的障碍,很多厂商只是在管理员权限下对产品功能进行测试,因此普通帐户往往需要扩展权限才能正常工作。
  
  重要的Windows XP服务
  
  ● Workstation:创建和维护到远程服务的客户端网络连接。如果你想要访问Internet或者局域网,就必须启动该服务
  
  ● Computer Browser:维护网络上计算机的更新列表,它还管理文件和打印机共享信息。
  
  ● Print Spooler:管理本地或网络共享的打印机。
  
  ● Protected Storage:提供对敏感数据(如私钥)的保护性存储,以便防止未授权的服务或用户对其的非法访问。
  
  ● Cryptographic Services:它确定Windows文件的签字、受保护的根服务,添加和删除受信根证书机构的证书和密钥服务,帮助计算机获取证书。
  
  ● Messenger:传输客户端和服务器之间的 NET SEND 和 Alerter 服务消息,此服务与 Windows Messenger 无关。如果服务停止,Alerter 消息不会被传输。经常被垃圾信息发送者滥用,最好将其禁用。
  
  ● Plug and Play:使计算机在极少或没有用户输入的情况下能识别并适应硬件的更改,终止或禁用此服务会造成系统不稳定。
  
  ● Remote Procedure Call (RPC):因冲击波(Worm.Blaster)病毒的发作而鼎鼎大名,但却是Windows必需的通信服务(图6)。
   
 

  ● System Restore Service:Windows用它来备份系统文件以便需要时进行恢复。
  
  ● Alerter:通知所选用户和计算机有关系统管理级警报,容易被攻击者滥用,最好将其关闭。
  
  重要的服务管理工具
  
  ● 服务控制器:Windows XP Resource Kit中自带的命令行软件sc.exe可以用来对配置Windows服务并能提供很多有用的背景知识。
  
  ● Netstat:这条Windows XP自带的命令能够显示当前所有被激活的网络连接。
  
  ● TCPview:与Windows XP自带的Netstat功能类似,但提供了图形化的界面(www.sysinternals.com)。
  
  ● Nmap:带有丰富的安全设置分析工具和端口扫描器的安全分析软件(www.insecure.org)。
  
  ● SuperScan:适用于Windows平台的端口扫描器,易于使用(http://www.foundstone.com/resources/freetools.htm)。
  
  ● Languard:带有强大分析功能的安全分析和网络监测工具,30天内可试用(www.gfi.com/languard)。
  
  ● Portqry:来自Microsoft的免费端口扫描工具(http://support.microsoft.com/default.aspx?scid=kb;zh-cn;310099)。

——————————————————————
公告栏
———————————
留言板
———————————
看广告玩游戏送QQ币

(转)使用Microsoft提供的NTSVC.OCX控件,VB也可以将你的应用程序做成Service服务

NTSVC.OCX控件,可以在网上搜索得到,在这里我就只介绍一下用法。
使用这个控件注册成Service服务的时候有个需要注意的,如果我们不使用/i或者/u参数,那么建立的Service服务会因为超时而不能启动。所以在注册Service服务的时候,必须带/i或/u参数。
1. 引用控件
选择“工程”-“引用”-“Microsoft NT Service Control”,如果没有,请先将NTSVC.OCX拷贝到%System32%/下,然后再引用对话框中选择浏览,添加该控件。
2. 主要代码
Private Sub Form_Load()
    On Error GoTo ServiceError
    ’安装Service服务
    If Command = ”/i” Then
        NTService.Interactive = True
        If NTService.Install Then
            NTService.SaveSetting ”Parameters”, ”TimerInterval”, ”300″
            MsgBox NTService.DisplayName & ”: installed successfully”
        Else
            MsgBox NTService.DisplayName & ”: failed to install”
        End If
        End
    ’删除Service服务
    ElseIf Command = ”/u” Then
        If NTService.Uninstall Then
            MsgBox NTService.DisplayName & ”: uninstalled successfully”
        Else
            MsgBox NTService.DisplayName & ”: failed to uninstall”
        End If
        End
    End If
    Timer.Interval = CInt(NTService.GetSetting(”Parameters”, ”TimerInterval”, ”300″))
    NTService.ControlsAccepted = svcCtrlPauseContinue
    NTService.StartService
    Exit Sub
ServiceError:
    Call NTService.LogEvent(svcMessageError, svcEventError, ”[" & Err.Number & "] ” & Err.Description)
End Sub
‘Unload the Service
Private Sub Form_Unload(Cancel As Integer)
    If Not StopService Then
        If MsgBox(”Are you sure you want to unload the service?…” & vbCrLf & ”the service will be stopped”, vbQuestion + vbYesNo, ”Stop Service”) = vbYes Then
            NTService.StopService
            Label1.Caption = ”Stopping”
            Cancel = True
        Else
            Cancel = True
        End If
    End If
End Sub
Private Sub NTService_Continue(Success As Boolean)
    On Error GoTo ServiceError
    Timer.Enabled = True
    Success = True
    NTService.LogEvent svcEventInformation, svcMessageInfo, ”Service continued”
    Exit Sub
ServiceError:
    NTService.LogEvent svcMessageError, svcEventError, ”[" & Err.Number & "] ” & Err.Description
End Sub
Private Sub NTService_Control(ByVal mEvent As Long)
    On Error GoTo ServiceError
    Exit Sub
ServiceError:
    NTService.LogEvent svcMessageError, svcEventError, ”[" & Err.Number & "] ” & Err.Description
End Sub
Private Sub NTService_Pause(Success As Boolean)
    On Error GoTo ServiceError
    Timer.Enabled = False
    NTService.LogEvent svcEventError, svcMessageError, ”Service paused”
    Success = True
    Exit Sub
ServiceError:
    NTService.LogEvent svcMessageError, svcEventError, ”[" & Err.Number & "] ” & Err.Description
End Sub
Private Sub NTService_Start(Success As Boolean)
    On Error GoTo ServiceError
    Success = True
    Exit Sub
ServiceError:
    NTService.LogEvent svcMessageError, svcEventError, ”[" & Err.Number & "] ” & Err.Description
End Sub
Private Sub NTService_Stop()
    On Error GoTo ServiceError
    StopService = True
    Unload Me
ServiceError:
    NTService.LogEvent svcMessageError, svcEventError, ”[" & Err.Number & "] ” & Err.Description
End Sub
3. 如果是有其他的控件触发Service服务的Install和Uninstall,可以采用Shell或者WinExec来处理。
先声明函数
Public Declare Function WinExec Lib ”kernel32″ (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
Public Const SW_HIDE = 0
使用,比如用CheckBox触发
a.安装
    Call WinExec(App.EXEName & ” /i”, SW_HIDE)
b.卸载
    Call WinExec(App.EXEName & ” /u”, SW_HIDE)
 

——————————————————————
公告栏
———————————
留言板
———————————
看广告玩游戏送QQ币

(转)如何利用VB编写NT服务程序

一、NT服务程序
    所谓NT服务,实际上就是一个可以在系统启动时自动在一定身份下启动的伴随系统长时间存在的进程。象FTP server、HTTP server、脱机打印等都是采用NT服务的形式提供的。这实际上类似Unix的root daemon进程。NT服务归纳起来,NT服务又以下几个特征:
1、可以自启动,不需要交互启动。这对于服务器来说是一个重要的特征。当然,你可以决定服务是否自启动,甚至可以屏蔽某个服务。
    2、NT服务没有用户界面,基本上类似一个DOS 程序,因为NT服务必须长时间运行,所以不想普通win32进程一样有自己的界面。但是NT服务可以同用户有界面交互,这是一类特殊的服务进程。可以通过NT的任务管理器来看到服务进程。
    3、NT服务通过SCM(Services Control Manager)接口来管理,安装、启动、停止、撤除等都需要SCM的接口功能来进行。控制面板的服务控制器就是利用SCM接口来管理系统中的所有服务的。实际上,还有一些可以控制服务的程序或者命令,有net.exe 、服务器管理器等 、SCM.exe等。
    4、这些进程都以一定的身份运行,以方便进行服务器资源的存取。一般情况下使用域中的LocalSystem账号运行,此账号对本机上的大多数资源(除非特别禁止)有完全的存取权限,这样可以保证服务程序的“强大”。但是,也有些服务采用特别的账号运行,你也可以特别设定一个服务的帐号。
    5、由系统自动以线程方式运行,一般情况下不过多占用系统资源,这同普通的进程有所区别,如果不采用线程方式,一般进程往往消耗整个CPU资源。一般需要时时存在,又不能过多消耗资源的任务以服务来实现最合适。
二、服务控件
    一般认为编写NT服务需要使用C/C++来实现,VC6利用ATL向导来提供一个基本的服务框架。具体实现步骤为:FileàNew…àATL COM AppWizardàserviceàFinish.但是使用VC编写NT服务需要编写太多的代码,这也意味着需要太多的调试、维护。实际上,NT服务不是必须由C/C++才可以编写的,实际上可以由任何能够实现上一节几个特点的任何语言实现,包括VB。
VB编写服务有那些好处呢,至少可以列出以下几条:
1、编码简单,熟悉Vb语法的任何人理解本文后都可编写。
    2、意味着修改服务实现的逻辑简单,维护简单。
    3、可以利用几乎大多数的Vb中的组件功能,编写一个强大的服务,譬如ado等,如果用VC来实现,相信任何人都会发怵。
    4、(牵强一点)可以证明Vb在Bill的天空下是多么强大。
    那么,Vb如何实现NT服务编写呢?据我所至,至少有两种途径:
1、  按照C/C++的思路利用WinAPI来实现。
2、  利用组件按照Vb传统方式实现。
如果利用方法1实际上是照搬C/C++的套路,如果有更好的路子可以实现,相信任何人都不会走这条“绝路”,因为相对于其他语言来说这种编程完全丧失了Vb自身得特点同时也没有获得其他语言的任何优势。在这里,想告诉大家的是利用OCX来实现一个服务。如果您在MSDN中搜索Samples\msdn\techart\4920\,您可以看到一个已经编写好的vc5的工程文件。编译这个工程实际上会得到一个ntsvc.ocx的。如果您对C/C++不熟悉,可以从http://www.mywebtech.net/download/ntsvc.zip (已失效)下载一个ntsvc.ocx,此OCX是我从backoffice碟中获得的,将其拷贝到\winnt\system32\下,利用regsvr32  ntsvc.ocx命令注册之。这样,您的Vb就可以从project\components…引出的对话框列表中看到名为“Microsoft NT Service Control”项。此组件拥有我们创建一个服务的基本的功能,如果要编写一个NT服务,我们将其拖进我们的窗体,然后设定其属性,调用其与系统、注册表、SCM交互的功能就可以实现完成一个服务了。
我们首先了解这个组件的属性,并向大家解释这些属性的用法:
    Account String ,账号属性,即本NT服务在哪一个NT域账号下运行,缺省是LocalSystem账号,实际上大多数的NT服务都可以在此账号下安全圆满的运行。
    ControlsAccepted Long,此服务接受那些SCM控制,为以下值:
    0     允许Start 以及 Stop .
       2     允许Pause 以及 Continue .
4     允许 shutdown 。
其他值,用户自定义的某些事件.
利用这个属性,您可以自己决定NT服务进程某个(譬如某个不可中断操作)时刻是否允许SCM停止、暂停、启动等操作。
    Dependencies String ,如果您编写的服务依赖于某个或者某些服务才能正常运行,您必须在注册服务时指定依赖的服务列表。Dependencies按照依赖顺序以chr(0)来分隔多个服务,最后必须以两个chr(0)结束。(大家可以看到这是一个C/C++的存在痕迹)
    DisplayName String,显示名,NT服务以何种名字显示给察看者。
    Interactive   Boolean ,是否允许有同桌面用户有交互的部分。
    LoadOrderGroup String,同Dependencies相关,决定如果本服务启动之前,那些服务必须启动,格式也类似,也以chr(0)分割,连续的两个chr(0)结尾。
    Password String,服务启动的口令,如果使用缺省得账号,就没有必要设定服务启动的帐号。
    ServiceName String,服务名,如果使用net.exe来控制服务,net.exe的指定那一个服务的参数就是此属性中的字符串。
    StartMode 枚举型,具体为:
    vcStartAutomatic     2     服务可以自己启动
svcStartManual 3     服务手动启动
svcStartDisabled       4       服务不能自启动
    另外有一个Debug属性,不做讨论。
我们要将一个VB程序当作一个NT服务,必须向系统作一些“申请”,而相应的工作VB是无法很好的完成的。所以,NTSVC.ocx提供了相应的方法留作我们想系统传递相关信息。
    Install ,将当前Vb程序安装成NT服务,在此之前,您必须至少设置DisplayName, ServiceName, ControlsAccepted以及StartMode等属性。除此之外您可能还要设置Account、Password、LoadOrderGroup、Dependencies等。这些信息的设置正确与否,决定您的服务程序能否正常启动运行。
    Uninstall, 将当前NTSVC.ocx指定的服务从系统注册表中删除。NT服务取决于系统服务注册表的设定,这是一个众所周知的秘密。
    StartService,将指定的服务启动,如果该服务注册了。
    StopService,停止服务,如果服务正在运行。
    LogEvent ,记录服务事件。服务运行中,可能发生错误以及意料不到的事件,这些可以通过此方法记录下来,供管理员通过“事件察看器”察看相关的信息,以最优化服务。此方法有三个参数event, id, message. Event指发生的事件类型,可以设为以下值:
    svcEventError 1     错误事件  
    svcEventWarning     2     警告事件.
    svcEventInformation       4       提供参考信息.
svcEventAuditSuccess      8       审计成功.
svcEventAuditFailure       10       审计失败
除了以上方法,可能用户还需要读写注册表,此控件还提供了注册表的访问方法:
DeleteSetting  (section[, key])
GetAllSettings(section)
GetSetting(section, key[, default])
SaveSetting(section, key, setting). 
三、编写服务
    了解以上内容,下面我们开始来设计一个服务,通过例子,让大家理解如何在VB中编写服务.
    在此之前,我们决定写一个什么样的服务。我参考C++Build中的一个例子,写一个不断报警的服务进程。该进程启动后在后台不断间隔5秒发出Beep叫,这可以让大家更深切知道此服务的存在,虽然有些令人讨厌。服务的名字为VBBeepSVC,在SCM中显示为The VB NT SVC View。
   跟着我一起来吧!
   1、创建工程,设定相关使用到的控件。
      所有的Vb的控件必须有一个Form作为载体,所以,首先我们创建一个标准工程,选择菜单project―>Components…,然后选取(Microsoft NT Service Control),会在Toolbar中出现NT服务控件。再拖一个Timer控件到Form上。然后保存一下。基本上,创建过程完成。
   2、设定控件属性。
      选中NtSvc.ocx实例,在属性栏中设定:DisplayName: The VB NT SVC View,ServiceName: VBBeepSVC,StartMode:3(手动启动服务).其他的就缺省吧。
      由于我们希望每个5秒就beep一次,所以我们必须依靠一种定时机制来实现,所以我们将timer的Interval设定位5000毫秒。
      以上属性的设定视您的需要而定,我只是说在我的VBBeepSVC中如此设定足够了。
   3、编写代码,实现服务逻辑以及服务安装、撤除。
      因为服务程序实际上是一个Exe文件,并且需要自己解决安装、撤除问题,因此需要在此程序中加入利用NT服务控件来实现安装、撤除问题。那么,应当在什么时候进行了。VB程序启动时正时Form装载的时候,所以,我们需要在窗体的Load事件中加入一些代码:
On Error GoTo Err_Load  ‘如果出现错误就纪录以供参考
    Dim strDisplayName As String    
    strDisplayName = NTService1.DisplayName
    If Command = ”-install” Then  ‘当启动时带上 Cinstall的参数时
        NTService1.Interactive = True
        If NTService1.Install Then
            Call NTService1.SaveSetting(”Parameters”, ”TimerInterval”, ”1000″) ‘系统参数存储
            MsgBox strDisplayName & ” 安装成功!”
        Else
            MsgBox strDisplayName & ” 安装失败”
        End If
        End ‘终止安装
    Else
        If Command = ”-uninstall” Then ‘如果启动时带上 撤除参数
           If NTService1.Uninstall Then
              MsgBox strDisplayName & ” 撤除成功”
           Else
              MsgBox strDisplayName & ” 撤除失败”
           End If
           End ‘终止撤除
        Else
        End If
     End If
     ‘假若不是安装或撤除操作,即为启动服务
     Timer1.Interval = CInt(NTService1.GetSetting(”Parameters”, ”TimerInterval”, ”2000″))
     ‘使用Timer控件来模拟服务的线程特性
     NTService1.ControlsAccepted = svcCtrlPauseContinue ‘接受暂停、停止操作,意味着需要为此编码
     NTService1.StartService ‘设置好参数后启动服务
Err_Load:
    Call NTService1.LogEvent(svcMessageError, svcEventError, ”[" & Err.Number & "] ” & Err.Description) ‘svcMessageError为NT服务控件的错误值
    4、添加控制服务的代码。
    尽管服务的连续线程等特性是依赖Timer实现的,但是服务的控制却是有SCM接口向每一个服务发出的,表现在VB服务程序中为NT服务控件捕获到相关的事件发生,我们就应当在这些事件中根据具体的情况响应,决定能不能、如何控制服务逻辑。当然,具体的逻辑在Timer事件中表现,但是通过改变NT服务控件和Timer控件均支持的全局变量,可以实现控制服务的逻辑实现。具体代码演示:
Private Sub NTService1_Control(ByVal EventID As Long)
   On Error GoTo Err_Control
           ‘在此加入一些自己的处理逻辑,当然也可以如本例一样空缺
   Err_Control:
        Call NTService1.LogEvent(svcMessageError, svcEventError, ”[" & Err.Number & "] ”              & Err.Description) ‘纪录
End Sub
Private Sub NTService1_Pause(Success As Boolean)
  On Error GoTo Err_Pause
        Timer1.Enabled = False ‘禁止Timer事件,因此也停止了服务的发生
        Call NTService1.LogEvent(svcEventError, svcMessageError, ”Service paused”)
        Success = True  ‘返回给SCM命令发出者,表示服务成功停止
Err_Pause:
    Call NTService1.LogEvent(svcMessageError, svcEventError, ”[" & Err.Number & "] ” & Err.Description)
End Sub
Private Sub NTService1_Start(Success As Boolean)
  On Error GoTo Err_Start
    Success = True 
    Timer1.Enabled = True ‘允许服务逻辑进行
  Err_Start:
    Call NTService1.LogEvent(svcMessageError, svcEventError, ”[" & Err.Number & "] ” & Err.Description)
End Sub
Private Sub NTService1_Stop()
  On Error GoTo Err_Stop
     Unload Me ‘撤除Form,自然Timer也不存在,服务逻辑停止了
  Err_Stop:
 Call NTService1.LogEvent(svcMessageError, svcEventError, ”[" & Err.Number & "] ” & Err.Description)
End Sub
    5、编写服务逻辑。
    具体就是在Timer事件中,根据约定写一些服务细节。本例中就是发出Been,但是考虑到对SCM命令的响应,所以需要编码为:
On Error GoTo Err_Timer
    Beep ‘此处即具体的服务细节
Err_Timer:
    Call NTService1.LogEvent(svcMessageError, svcEventError, ”[" & Err.Number & "] ” & Err.Description)
End Sub
    6、编译安装、测试
    如果以上没有什么错误的话,现在可以编译程序了。假设我们得到的服务程序的文件名为:VBBeepSVC.exe,我们需要通过以下命令进行安装:
    d:\vbprog\>VBBeepSVC Cinstall
    如果需要撤除已经安装的服务,则:
    d:\vbprog\>VBBeepSVC Cuninstall
    安装完后,打开控制面板的“服务”(win2000中在“管理工具”),好了,看到其中的NT服务列表中包含我们加入的服务,显示为:“The VB NT SVC View”,我们可以类似启动其他任何服务一样启动、停止、暂停此服务。启动服务时,我们会听到服务发出的讨厌的beep声音。我们的测试完成。
四、VB编写服务的几个说明:
    1、首先声明:VB编写服务是一种尝试,技术研究,并非提倡所有服务都要用VB写才对头。同理,也说明了服务非VC写不可。
    2、VB写的服务仅适合win32服务,不适合NT底层服务。
    3、VB的优势在ActiveX控件,NT服务中我们可以使用绝大多数控件来完成我们的服务逻辑,譬如涉及数据库操作,我们可以使用ADO组件,这方面,同VC相比,VB具有天然的优势。
    4、做好服务内部的错误事件记载,只有用好这一点,才能够真正符合服务编写规范,也方便我们的除错。
    5、最后一点,本文仅供参考,如有错误以及错误引起的后果,本人概不负责.

——————————————————————
公告栏
———————————
留言板
———————————
看广告玩游戏送QQ币

(转)电信禁路由上网的破解方法

 电信禁路由上网的破解方法

ADSL共享上网有两种方式,一种是代理,一种是地址翻译(NAT),大家常说的路由方式其实就是NAT方式,其实路由和NAT的原理还是有区别的,这里不作讨论,现在的ADSL猫一般都有NAT的功能,用它本身的功能实现共享上网是比经济方便,本文主要讨论这种方式。
  要想阻断一台以上的计算机上网必须能发现共享后边的机器是否多于一台,NAT的工作原理如图一所示,经过NAT转换后访问外网的内网的计算机的地址都变成了192.168.0.1而且MAC地址也转换成了ADSL的MAC地址,也就是说,从原理上讲,直接在ADSL出口抓经过NAT转换的包是不能发现到底有几台机器在上网。那是如何发现的呢?经过研究发现它是采用多种方法探测用户是否用共享方式上网,从而进行限制,下面分别进行破解:
一.检查同一IP地址的数据包中是否有不同的MAC地址,如果是则判定用户共享上网。破解的办法是把每台机的MAC地址改为一样.修改的方法如下:
  首先要获取本机的MAC:MAC地址是固化在网卡上串行EEPROM中的物理地址,通常有48位长。以太网交换机根据某条信息包头中的MAC源地址和MAC目的地址实现包的交换和传递。
⑴在Windows 98/Me中,依次单击“开始”→“运行” →输入“winipcfg”→回车。
⑵在Windows 2000/XP中,依次单击“开始”→“运行”→输入“CMD”→回车→输入“ipconfig /all”→回车。
  或者右键本地连接图标、选择状态然后点击支持选项卡,这里“详细信息”中包含有MAC和其它重要网络参数。
  1、如果你的网卡驱动有直接提供克隆MAC地址功能,如RealTek公司出的RTL8139芯片,那恭喜你了,点击“开始→设置→控制面板”,双击“网络和拨号连接”,右键点击需要修改MAC地址的网卡图标,并选择“属性”。在“常规”选项卡中,点击“配置”按钮,点击“高级”选项卡。在“属性”区,你应该可以看到一个称作 “Network Address”或“Locally Administered Address”的项目,点击它,在右侧“值”的下方,输入你要指定的MAC地址值。要连续输入12个数字或字母,不要在其间输入“-”。重新启动一次系统后设置就会生效了(Windows 98和Windows 2000/XP用户操作略有区别,请参照系统说明操作)
  2、如果你的网卡驱动没有提供克隆MAC地址功能,那下面分别提供一些方法,希望能找到一个适合你的
WIN98下:
 a.在"网上邻居"图标上点右键,选择"属性",出来一个"网络"对话框,在"配置"框中,双击你要修改的网卡,出来一个网卡属性对话框。在"高级"选项中,也是点击"属性"标识下的"Network Address"项,在右边的两个单选项中选择上面一个,再在框中输入你要修改的网卡MAC地址,点"确定"后,系统会提示你重新启动。重新启动后,你的网卡地址就告修改成功!!
 b.点击“开始→运行”,键入“winipcfg”,选择你要修改的网卡,并记录MAC地址值。点击“开始→运行”,输入“regedit”运行注册表编辑器(在修改注册表前,一定要先备份注册表),依据注册表树状结构,依次找到“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net”,你会看到类似“0000”、“0001”、“0002”等样子的子键。从“0000”子键开始点击,依次查找子键下的“DriverDesc” 键的内容,直到找到与我们查找的目标完全相同的网卡注册表信息为止。
  当找到正确的网卡后,点击下拉式菜单“编辑→新建→字符串”,串的名称为“networkaddress”,在新建的“networkaddress”串名称上双击鼠标,就可以输入数值了。输入你指定的新的MAC地址值。新的MAC地址应该是一个12位的数字或字母,其间没有“-”,类似“00C095ECB761”的样子。
  有两种方法激活新的MAC地址:
  如果你使用的是普通内置网卡,就必须重新启动计算机来使修改生效。
  如果你使用的是PCMCIA卡,你可以按照下面的步骤操作而不必重新启动操作系统:运行winipcfg,选择并释放DHCP设置,关闭winipcfg。打开控制面板或系统托盘“PC Card (PCMCIA)”,停止并弹出PCMCIA网卡。重新插入PCMCIA网卡,打开winipcfg,选择并刷新DHCP设置,运行winipcfg,确定修改的MAC地址已生效
WIN2000下:
 a.在桌面上网上邻居图标上点右键,选"属性",在出来的"网络和拨号连接"窗口中一般有两个图标,一个是"新建连接"图标,一个是"我的连接"图标。如果你的机器上有两个网卡的话,那就有三个图标了。如果你只有一个网卡,那就在"我的连接"图标上点右键,选"属性",会出来一个"我的连接 属性"的窗口。在图口上部有一个"连接时使用:"的标识,下面就是你机器上的网卡型号了。在下面有一个"配置"按钮,点击该按钮后就进入了网卡的属性对话框了,这个对话框中有五个属性页,点击第二项"高级"页,在"属性"标识下有两项:一个是"Link Speed/Duplex Mode",这是设置网卡工作速率的,我们需要改的是下面一个"Network Address",点击该项,在对话框右边的"值"标识下有两个单选项,默认得是"不存在" ,我们只要选中上面一个单选项,然后在右边的框中输入你想改的网卡MAC地址,点"确定",等待一会儿,网卡地址就改好了,你甚至不用停用网卡!
你也可以在"设置管理器"中,打开网卡的属性页来修改,效果一样。
b.1.在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\4D36E972-E325-11CE-BFC1-08002BE10318 \0000、0001、0002”等主键下, 因为你有可能安装了不止一块网卡,所以在这个主键下馍能会有多个类似于“0000、0001”的主键,这时候你可以查找DriverDesc内容为你要修改的网卡的描述相吻合的主键,如“0000”。
  
 2.在上面提到的主键下,添一个字符串,名字为“NetworkAddress”,把它的值设为你要的MAC地址,要连续写 如“001010101010”。
  
 3.然后到主键下“NDI\params”中添加一项“NetworkAddress”的主键值,在该主键下添加名为“default”的字符串,值写要设的MAC地址,要连续写,如“001010101010”。
  
  【注】实际上这只是设置在后面提到的高级属性中的“初始值”,实际使用的MAC地址还是取决于在第2点中提到的“NetworkAddress”参数,而且一旦设置后,以后高级属性中值就是“NetworkAddress”给出的值而非“default”给出的了。
  
 4.在“NetworkAddress”的主键下继续添加名为“ParamDesc”的字符串,其作用为指定“NetworkAddress”主键的描述,其值可为“MAC Address”(也可以随意设置,这只是个描述,无关紧要,这个值将会在你以后直接修改MAC地址的时候作为描述出现),这样重新启动一次以后打开网络邻居的属性,双击相应网卡项会发现有一个高级设置,其下存在MAC Address (就是你在前面设置的ParamDesc,如图(^29041103a^)1)的选项,这就是你在第二步里在注册表中加的新项“NetworkAddress”,以后只要在此修改MAC地址就可以了。
  
 5.关闭注册表编辑器,重新启动,你的网卡地址已经改好了。打开网络邻居的属性,双击相应网卡项会发现有一个MAC Address的高级设置项。用于直接修改MAC地址,而且不需要重新启动就可以实现MAC的随时更改。
WinXP下
  大部分的网卡都可以通过在控制面板中修改网卡属性来更改其MAC地址。在“设备管理器中”,右键点击需要修改MAC地址的网卡图标,并选择“属性/高级”选项卡。在“属性”区,就可以看到一个称作“Network Address”或其他相类似名字的的项目,点击它,在右侧“值”的下方,输入要指定的MAC地址值。要连续输入12个十六进制数字或字母,不要在其间输入“-”。
 另外有几个可以修改MAC的软件都可以在XP/W2K下运行,大家可以去网上搜下,所以这里就不详细介绍了
linux下
  需要用 #ifconfig eth0 down 先把网卡禁用 ,再用ifconfig eth0 hw ether 1234567890ab ,这样就可以改成功了
要想永久改,就在/etc/rc.d/rc.local里加上这三句(也可在/etc/init.d/network里加下面三行)
ifconfig eth0 down
ifconfig eth0 hw ether 1234567890ab
ifconfig eth0 up
  如果你想把网卡的MAC地址恢复原样,只要再次把"Network Address"项右边的单选项选择为下面一个"没有显示"再重新启动即可。在WIN2000下面是选择"不存在",当然也不用重新启动了。
  二、通过SNMP(简单网络管理协议)来发现多机共享上网。有些路由器和ADSL猫内置SNMP服务,通过扫描软件(ipscan、superscan……)扫描一下,发现开着161端口,161是SNMP(简单网络管理协议)的服务端口,难道是通过SNMP协议发现的主机数量,用xscan对猫进行了漏洞扫描,果然有默认密码,登陆到猫的管理界面但是找不到关闭SNMP服务的地方,看来是留的后门,由此基本可断定是通过SNMP协议发现的主机数。为了进一步证实,用SNMP的一个管理软件ActiveSNMP查看ADSL猫的连接情况,如图二所示,可以清楚地看出通过SNMP协议可以发现同时上网的主机数量。
解决办法:
 1.如果该猫可以关闭SNMP协议,那就把SNMP用的161端口禁止就行了.使用路由器或打开ADSL猫的路由模式共享上网的朋友可以进入管理界面有关闭SNMP选项的关掉它。如果猫的管理界面无关闭SNMP选项的只好买一个没有SNMP服务的路由器,例如TP-LINK TL-R400,放到adsl moden和hub中间,如下图.在该路由器中再做一个NAT服务,这样进到ADSL猫中的就是一个地址,这样就解决了共享上网。 [...]

(转)网站同步镜像及数据库同步

网站同步镜像及数据库同步
1.介绍
现在的网站随着访问量的增加,单一服务器无法承担巨大的访问量,有没有什么方便快捷的方式解决这个问题呢,答案是”有”!比如建立服务器群,进行均衡负载.
但是如果要解决像电信网通这样的互访问题(中国网民的悲哀..),这个解决办法就无能为了了!
要解决这个问题最方便快捷的方式就是建立镜像网站!由访问者自己选择适合自己网络的速度最快的网站!这样即可以解决线路问题,又可以解决访问量问题!
2.网站同步的数据分类
网站数据基本分为两类:
一类是文件,比如HTML,ASP,PHP等网页文件,或者RAR,ZIP,RM,AVI等可下载文件!
要实现他们的同步很简单,用FTP同步软件就可以了!至于哪几个我会在后面做详细介绍.
一类是数据库数据文件,比如MySQL,SQL Server等等!
数据库同步的方法也很多,最简单的办法只是将数据库目录同步一下就OK了!
在后面我也会做详细讲解!
3.网站文件的同步
在这里用到的主要工具就是FTP,网站文件同步分两种情况,一种是本地到远程,一种是远程到远程(FXP)!第一种不用说了,第二种远程到远程即FXP,支持它的软件也很多,但是真正适合多网站同步镜像的却不多!
下面我介绍几个我认为不错的软件!(PS:如果熟悉FTP命令,完全可以自己制作一个批处理文件时间的)
1.首先我要推荐的是国产的FTP软件”网络传神”,功能非常强大,特别是在网站的同步镜像方面,可惜的是,这款非常经典的软件已经不再更新了,最后更新时间是2003年3月,最后一个版本是3.12!虽然如此还是非常好用的!下面是一段官方的简介:
网络传神完全吸收了Cuteftp和UpdataNow的全部功能,并且增加了其他软件没有的多项功能:支持网站互传;支持网站同步(UPDATA NOW);支持后台上传(多线程上传多个文件);可同时打开多个站点;多站点计划上传功能,支持镜像站点;支持宏操作支持计划操作;支持文件高级比较上传;支持目录隐藏过滤(为用ForntPage作主页的朋友带来福音);服务器自动识别功能;资源管理器浏览方式;可以自定义命令;支持RFC959标准具有更好的稳定性;完备的信息返回机制及错误监控机制完整的中文帮助。
2.第二款是由ReGet同一开发公司制作的专用于网站同步的软件”WebSynchronizer”,用这款软件,你才会体验到网站同步的方便快捷,简单容易.最新版本是1.3.62, 网上能找到XX的最后版本是1.1版!下面是一段简介:
档案同步化工具 - WebSynchronizer,由知名续传软件 ReGet 之软件出版公司所推出,是网站同步化、档案镜像、档案备份的绝佳工具,可以执行下列主要工作:1) 本机资料夹及远程资料夹的同步化;2) 两台远程计算机中的资料夹同步化;3) 两个本机资料之同步化。 
3.其他还有一些软件如同步快梭(AutoSyncFTP),也能实现简单的网站同步,不过,这款软件非常不稳定,而且2001年就已经停止开发.所以,不用考虑了!还有上次有朋友提到的SiteMirro,由于网上找不到可以用的版本,所以没有办法测试!
4.网络传神网站同步镜像使用傻瓜指南
第一次运行网络传神的时候,它会让你选择”完全模式”和”启动模式”,要使用网站同步必须选择”完全模式”.
进入主界面:你会发现这个软件非常像FlashGet,要使用网站同步功能,点击软件左下角的”FTP客户端”.
现在你要做的就是添加你的镜像母站和需要镜像的网站:文件->站点管理,在里面添加你需要同步的几个的FTP服务器,下面我将介绍具体设置(主要是镜像母站的设置)
母站设置最重要的地方就是”比较目录(网站同步)”:
1.拖动传送
就是手动拖动传送时候的传送方式,非拖动方式不受影响,因为母站的更新基本上是从本地目录进行的,所以建议这里选择第二项”只上传不同的文件”,镜像站点这里可以忽略
2.磁盘比较设置
这个功能非常有用,可以通过文件长度和文件日期进行文件差异对比.
你还可以设置本地目录过滤和服务器目录过滤,非常灵活!
好了,添加好母站和镜像站之后,我们来设置同步:
如果是添加镜像站,则会跳出下面的母站选择窗口:
设置好多个镜像站点之后,返回主界面就可以进行网站同步了:
注意事项:
一般不要改动镜像站点前面的“对钩”标志,因为镜像站点同步的原理是“根据主站点的同步信息更新镜像站点”,如果景象站点没有更新那么必须将该镜像站点单独同步。
注意一般应该“选项窗口”-〉“FTP客户端”-〉“计划”中的“最大连接个数”和“最大线程个数”一般不要改动保持为“1”。
如果同步时某个站点出错同步没有完全完成只需按“计划”窗口中的 按钮单独执行某个站点的传送即可。
再介绍一下网站镜像同步中必要的功能,定时同步,这样你就只要做好母站的更新,其他的让网络传神帮你完成:
点击设置:
进入网络传神的选项设置窗口,选中FTP客户端中的定时同步
定时下载:在指定的时段内下载文件。
定时上传:在指定的时段内用网站同步的方法进行上传。
开始时间:如果要使用定时方式必须设置此项,在设置的时间中会自动开始所有设置为计划的站点。
停止时间:如果设置此项则当系统时间大于停止时间时自动停止所有设置为计划的站点。
注意:定时上传种没有“停止时间”选项,网站同步完成后会自动停止,同时网站同步同一时间只能运行一次。
网络传神还有很多为便于同步镜像设置的功能,大家实际使用中去体会吧!
5. Web Synchronizer 网站同步镜像使用傻瓜指南
Web Synchronizer功能非常强大,不单单是网站同步,还可以进行本地目录同步,本地到远程同步,功能方面远胜过传神,不过,国内好像没有汉化版,对于一些对英文感冒的朋友用起来会不太舒服,希望CCF里的汉化高手能将他中文化!
开始运行程序,老外的软件就是智能,一打开这个软件就会有一个同步向导跳出来!
在这里,你也看出来了吧,这个软件只支持两个目录间的同步.不过,我们可以创建多个项目来解决这个问题!具体我在后面介绍!这里,我们来看看如何建立两个远程目录的同步!
选择第二项,进入下一个选择框:
网站同步当然是选择第一项了!再进入下一步,要你选择同步的第一个服务器,建议在这里servers list,先编辑好需要同步的几个FTP
同步方式设置说明:
第一项的意思是:上传下载所有改变的文件
第二项的意思是:不改变文件夹内容,只下载新的文件
点击下一步进行第二个服务器设置,方法和第一个一样!
设置完成后,你还可以修改任务名称!
我觉得这点就是这个软件非常优秀的地方,以任务的方式进行管理.非常方便!
OK,现在我们就可以看到他的主界面了!
还有一点要提,他的计划任务更能也很强大,在这里我就不再多说了!用过才知道他的强大!
有朋友会说,我要进行两个以上的网站同步怎么办?
很简单,再多建几个任务就可以了,要镜像多少网站都没有问题!
这个软件的网站同步镜像可以非常灵活,比如可以本地-远程,然后再远程-远程!或者本地-远程1,本地-远程2,远程1-远程2,任何情形下的同步都可以完成! 
3.数据库同步操作指南
说完了文件同步,我们再来探讨一下数据库同步!
这里我主要教大家两种最常用的数据库的同步方法!
MySQL
MySQL数据同步主要有三种方式:
1.利用MySQL自身的数据库同步功能
2.利用MySQL数据库的特性(数据库存在固顶目录,并且以文件形式存储),进行数据库目录同步以达到数据同步目的
3.利用专用的MySQL数据库同步软件
1. 利用MySQL自身的数据库同步功能(下面参考自网上的文章,写的非常详细了)
MySQL从3.23.15版本以后提供数据库复制功能。利用该功能可以实现两个数据库同步,主从模式,互相备份模式的功能.
数据库同步复制功能的设置都在mysql的设置文件中体现。mysql的配置文件(一般是my.cnf),在unix环境下在/etc/mysql/my.cnf 或者在mysql用户的home目录下的my.cnf。
windows环境中,如果c:根目录下有my.cnf文件则取该配置文件。当运行mysql的winmysqladmin.exe工具时候,该工具会把c:根目录下的my.cnf 命名为mycnf.bak。并在winnt目录下创建my.ini。mysql服务器启动时候会读该配置文件。所以可以把my.cnf中的内容拷贝到my.ini文件中,用my.ini文件作为mysql服务器的配置文件。 
设置方法:
  设置范例环境:
  操作系统:window2000 professional
  mysql:4.0.4-beta-max-nt-log
  A ip:10.10.10.22
  B ip:10.10.10.53
  A:设置
  1.增加一个用户最为同步的用户帐号:
  GRANT FILE ON *.* TO backup@’10.10.10.53′ IDENTIFIED BY ‘1234’
  2.增加一个数据库作为同步数据库:
  create database backup
  B:设置
  1.增加一个用户最为同步的用户帐号:
  GRANT FILE ON *.* TO backup@’10.10.10.22′ IDENTIFIED BY ‘1234’
  2.增加一个数据库作为同步数据库:
  create database backup
  主从模式:A->B
  A为master
  修改A mysql的my.ini文件。在mysqld配置项中加入下面配置:
  server-id=1
  log-bin
  #设置需要记录log 可以设置log-bin=c:mysqlbakmysqllog 设置日志文件的目录,
  #其中mysqllog是日志文件的名称,mysql将建立不同扩展名,文件名为mysqllog的几个日志文件。
  binlog-do-db=backup #指定需要日志的数据库
  重起数据库服务。
  用show master status 命令看日志情况。
  B为slave
  修改B mysql的my.ini文件。在mysqld配置项中加入下面配置:
  server-id=2
  master-host=10.10.10.22
  master-user=backup #同步用户帐号
  master-password=1234
  master-port=3306
  master-connect-retry=60 预设重试间隔60秒
  replicate-do-db=backup 告诉slave只做backup数据库的更新
  重起数据库
  用show slave status看同步配置情况。
  注意:由于设置了slave的配置信息,mysql在数据库目录下生成master.info
  所以如有要修改相关slave的配置要先删除该文件。否则修改的配置不能生效。
  双机互备模式。
  如果在A加入slave设置,在B加入master设置,则可以做B->A的同步。
  在A的配置文件中 mysqld 配置项加入以下设置:
  master-host=10.10.10.53
  master-user=backup
  master-password=1234
  replicate-do-db=backup
  master-connect-retry=10
  在B的配置文件中 mysqld 配置项加入以下设置:
  log-bin=c:mysqllogmysqllog
  binlog-do-db=backup
  注意:当有错误产生时*.err日志文件。同步的线程退出,当纠正错误后要让同步机制进行工作,运行slave start
  重起AB机器,则可以实现双向的热备。
  测试:
  向B批量插入大数据量表AA(1872000)条
  A数据库每秒钟可以更新2500条数据。
2.数据库目录同步,方法和文件同步一样,设置好需要同步的两个数据库目录就可以了!
缺点很明显,数据同步只能单向进行,可以作为备份方案
3.用专用的MySQL同步软件进行同步
这方面的软件有SQLBalance 和MyReplicator ,优点是方便直观,还有很多争强功能!
缺点和2一样,只能单项同步!
当然你也可以修改镜像网站的程序为提交数据到母数据库,读取则在当前镜像下的数据,不过,修改起来麻烦!普通用户修改也非常难!呵呵,大家了解一下就可以!给大家一个思路!有能力的朋友可以试试阿!
MSSQL
MSSQL数据同步利用数据库复制技术实现数据同步更新(来自网络,也是非常完美的教程)
复制的概念 
复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。 
SQL复制的基本元素包括 
出版服务器、订阅服务器、分发服务器、出版物、文章 
SQL复制的工作原理 
SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些改变分发给订阅服务器 
SQL SERVER复制技术类型 
SQL SERVER提供了三种复制技术,分别是: 
1、快照复制(呆会我们就使用这个) 
2、事务复制 
3、合并复制 
只要把上面这些概念弄清楚了那么对复制也就有了一定的理解。接下来我们就一步一步来实现复制的步骤。 
第一先来配置出版服务器 
(1)选中指定[服务器]节点 
(2)从[工具]下拉菜单的[复制]子菜单中选择[发布、订阅服务器和分发]命令 
(3)系统弹出一个对话框点[下一步]然后看着提示一直操作到完成。 
(4)当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器。同时也生成一个分发数据库(distribution) 
第二创建出版物 
(1)选中指定的服务器 
(2)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令。此时系统会弹出一个对话框 
(3)选择要创建出版物的数据库,然后单击[创建发布] 
(4)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助) 
(5)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在不同的数据库如 ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行”SQL SERVER 2000″的数据库服务器 
(6)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表 
(7)然后[下一步]直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。 
第三设计订阅 
(1)选中指定的订阅服务器 
(2)从[工具]下拉菜单中选择[复制]子菜单的[请求订阅] 
(3)按照单击[下一步]操作直到系统会提示检查SQL SERVER代理服务的运行状态,执行复制操作的前提条件是SQL SERVER代理服务必须已经启动。 
(4)单击[完成]。完成订阅操作。 
完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?这里可以通过这种方法来快速看是否成功。展开出版服务器下面的复制――发布内容――右键发布内容――属性――击活――状态然后点立即运行代理程序接着点代理程序属性击活调度把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。接下来就是判断复制是否成功了打开C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\unc\XIAOWANGZI_database_database下面看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表― 
一个手工同步的方案 
–定时同步服务器上的数据 
–例子: 
–测试环境,SQL Server2000,远程服务器名:xz,用户名为:sa,无密码,测试数据库:test 
–服务器上的表(查询分析器连接到服务器上创建) 
create table [user](id int primary key,number varchar(4),name varchar(10)) 
go 
–以下在局域网(本机操作) 
–本机的表,state说明:null 表示新增记录,1 表示修改过的记录,0 表示无变化的记录 
if exists (select * from dbo.sysobjects where id = object_id(N’[user]‘) and OBJECTPROPERTY(id, N’IsUserTable’) = 1) 
drop table [user] 
GO 
create table [user](id int identity(1,1),number varchar(4),name varchar(10),state bit) 
go 
–创建触发器,维护state字段的值 
create trigger t_state on [user] 
after update 
as 
update [user] set state=1 
from [user] a join inserted b on a.id=b.id 
where a.state is not null 
go 
–为了方便同步处理,创建链接服务器到要同步的服务器 
–这里的远程服务器名为:xz,用户名为:sa,无密码 
if exists(select 1 from master..sysservers where srvname=’srv_lnk’) 
exec sp_dropserver ’srv_lnk’,’droplogins’ 
go 
exec sp_addlinkedserver ’srv_lnk’,”,’SQLOLEDB’,’xz’ 
exec sp_addlinkedsrvlogin ’srv_lnk’,’false’,null,’sa’ 
go 
–创建同步处理的存储过程 
if exists (select * from dbo.sysobjects where id = object_id(N’[dbo].[p_synchro]‘) and OBJECTPROPERTY(id, N’IsProcedure’) = 1) 
drop procedure [dbo].[p_synchro] 
GO 
create proc p_synchro 
as 
–set XACT_ABORT on 
–启动远程服务器的MSDTC服务 
–exec master..xp_cmdshell ’isql /S”xz” /U”sa” /P”” /q”exec master..xp_cmdshell ”net start msdtc”,no_output”‘,no_output 
–启动本机的MSDTC服务 
–exec master..xp_cmdshell ’net start msdtc’,no_output 
–进行分布事务处理,如果表用标识列做主键,用下面的方法 
–BEGIN DISTRIBUTED TRANSACTION 
–同步删除的数据 
delete from srv_lnk.test.dbo.[user] 
where id not in(select id from [user]) 
–同步新增的数据 
insert into srv_lnk.test.dbo.[user] 
select id,number,name from [user] where state is null 
–同步修改的数据 
update srv_lnk.test.dbo.[user] set 
number=b.number,name=b.name 
from srv_lnk.test.dbo.[user] a 
join [user] b on a.id=b.id 
where b.state=1 
–同步后更新本机的标志 
update [user] set state=0 where isnull(state,1)=1 
–COMMIT TRAN 
go 
–创建作业,定时执行数据同步的存储过程 
if exists(SELECT 1 from msdb..sysjobs where name=’数据处理’) 
EXECUTE msdb.dbo.sp_delete_job @job_name=’数据处理’ 
exec msdb..sp_add_job @job_name=’数据处理’ 
–创建作业步骤 
declare @sql varchar(800),@dbname varchar(250) 
select @sql=’exec p_synchro’ –数据处理的命令 
,@dbname=db_name() –执行数据处理的数据库名 
exec msdb..sp_add_jobstep @job_name=’数据处理’, 
@step_name = ’数据同步’, 
@subsystem = ’TSQL’, 
@database_name=@dbname, 
@command = @sql, 
@retry_attempts = 5, –重试次数 
@retry_interval = 5 –重试间隔 
–创建调度 
EXEC msdb..sp_add_jobschedule @job_name = ’数据处理’, 
@name = ’时间安排’, 
@freq_type = 4, –每天 
@freq_interval = 1, –每天执行一次 
@active_start_time = 00000 –0点执行 
go 

——————————————————————
公告栏
———————————
留言板
———————————
看广告玩游戏送QQ币

(转)两台SQL Server数据同步解决方案

两台SQL Server数据同步解决方案

复制的概念
  复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。
  SQL复制的基本元素包括
  出版服务器、订阅服务器、分发服务器、出版物、文章
  SQL复制的工作原理
  SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些改变分发给订阅服务器
  SQL SERVER复制技术类型
  SQL SERVER提供了三种复制技术,分别是:
  1、快照复制(呆会我们就使用这个)
  2、事务复制
  3、合并复制
  只要把上面这些概念弄清楚了那么对复制也就有了一定的理解。接下来我们就一步一步来实现复制的步骤。
  第一先来配置出版服务器
  (1)选中指定[服务器]节点
  (2)从[工具]下拉菜单的[复制]子菜单中选择[发布、订阅服务器和分发]命令
  (3)系统弹出一个对话框点[下一步]然后看着提示一直操作到完成。
  (4)当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器。同时也生成一个分发数据库(distribution)
  第二创建出版物
  (1)选中指定的服务器
  (2)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令。此时系统会弹出一个对话框
  (3)选择要创建出版物的数据库,然后单击[创建发布]
  (4)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)
  (5)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在不同的数据库如 ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行"SQL SERVER 2000"的数据库服务器
  (6)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表
  (7)然后[下一步]直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。
  第三设计订阅
  (1)选中指定的订阅服务器
  (2)从[工具]下拉菜单中选择[复制]子菜单的[请求订阅]
  (3)按照单击[下一步]操作直到系统会提示检查SQL SERVER代理服务的运行状态,执行复制操作的前提条件是SQL SERVER代理服务必须已经启动。
  (4)单击[完成]。完成订阅操作。
  完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?这里可以通过这种方法来快速看是否成功。展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——状态然后点立即运行代理程序接着点代理程序属性击活调度把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。接下来就是判断复制是否成功了打开C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\unc\XIAOWANGZI_database_database下面看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表—
  一个手工同步的方案
  –定时同步服务器上的数据
  –例子:
  –测试环境,SQL Server2000,远程服务器名:xz,用户名为:sa,无密码,测试数据库:test
  –服务器上的表(查询分析器连接到服务器上创建)
  create table [user](id int primary key,number varchar(4),name varchar(10))
  go
  –以下在局域网(本机操作)
  –本机的表,state说明:null 表示新增记录,1 表示修改过的记录,0 表示无变化的记录
  if exists (select * from dbo.sysobjects where id = object_id(N’[user]‘) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
  drop table [user]
  GO
  create table [user](id int identity(1,1),number varchar(4),name varchar(10),state bit)
  go
  –创建触发器,维护state字段的值
  create trigger t_state on [user]
  after update
  as
  update [user] set [...]

(转)Stream、WshShell、WshUrlShortcut对象及Shell.Application的使用说明

Stream、WshShell、WshUrlShortcut对象及Shell.Application的使用说明
来源:论坛转载无法确定出处,如有版权问题请与我们联系
1.Stream对象
组件:"Adodb.Stream"
有下列方法:
Cancel 方法
   使用方法如下
   Object.Cancel
   说明:取消执行挂起的异步 Execute 或 Open 方法的调用。
Close 方法
   使用方法如下
   Object.Close
   :关闭对像
CopyTo 方法
   使用方法如下
   Object.CopyTo(destStream,[CharNumber])
   说明:将对像的数据复制,destStream指向要复制的对像,CharNumber为可选参数,指要复制的字节数,不选为全部复制。
Flush 方法
   使用方法如下
   Object.Flush
   说明:
LoadFromFile 方法
   使用方法如下
   Object.LoadFromFile(FileName)
   说明:将FileName指定的文件装入对像中,参数FileName为指定的用户名。
Open 方法
    使用方法如下
    Object.Open(Source,[Mode],[Options],[UserName],[Password])
    说明:打开对像,
    参数说明:Sourece 对像源,可不指定
Mode [...]

随WINDOWS自动启动/取消启动模块

Public Sub SetAutoRun(ByVal Autorun As Boolean)
    ‘引用 Windows Scritp Host Object Model
    ‘WshShell 对象
    ‘ProgId Wscript.Shell
    ‘文件名 WSHom.Ocx
   
    Dim WshShell As WshShell
   
    Set WshShell = CreateObject("Wscript.Shell")
   
    If Autorun Then
        WshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" & App.EXEName, App.Path & "\" & App.EXEName & ".exe"
    Else
        WshShell.RegDelete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" & App.EXEName
    End If
   
    Set WshShell = Nothing
    [...]

(整)工具窗口快捷键,Visual Basic 6.0 默认快捷键选项

Visual Studio 
工具窗口快捷键,Visual Basic 6.0 默认快捷键选项 

 
下列快捷组合键允许显示特定的工具窗口。
 

命令
快捷键
说明

工具.命令窗口标记模式

Ctrl + Shift + M

将“命令”窗口置于允许在窗口中选择文本的模式。
[...]