用ASP+DLL实现WEB方式修改服务器时间

昨天一个朋友有个需求,是要通过WEB方式,修改IIS服务器上的时间,由于他的系统是ASP 3.0下开发的,所以本例子的代码是ASP的,不是ASP.NET,但是本人写这个文章是想抛砖引玉,毕竟编写程序关键的不是语言,更重要的是一种思想,把程序语言理解为一种工具,把编程思想理解为解决问题的思路和方法,那么编写出来的程序就是:利用“工具”按照解决问题的“思想”去解决一个问题。

首先,要感谢网友“小虎”,我是在网上看了他写的一篇关于用VB 6.0编写DLL组件FOR ASP的文章改写的,他的DLL代码只实现了改写小时和分钟,我增加了年、月、日、秒的修改。

首先,在VB 6.0中建立一个ActiveX Dll工程项目,信息如下:

工程名称:systimeset
类模块名称:timeset

VB 6.0的类模块代码如下:
 1 Option   Explicit
 2 Private  SystemTime  As  SystemTime
 3 Private   Declare   Function SetSystemTime Lib "kernel32" (lpSystemTime As SystemTime) As Long
 4Private Type SystemTime
 5        wYear As Integer
 6        wMonth As Integer
 7        wDayOfWeek As Integer
 8        wDay As Integer
 9        wHour As Integer
10        wMinute As Integer
11        wSecond As Integer
12        wMilliseconds As Integer
13End Type
14
15Dim tmp
16
17Private m_Hour As Integer
18Private m_Minute As Integer
19Private m_Year As Integer
20Private m_Month As Integer
21Private m_Day As Integer
22Private m_Second As Integer
23
24'由李锡远修改     修改日期:2006-08-31     修改项目:增加对年、月、日、秒的操作
25'--------------------
26'年
27Public Property Get Year() As Integer
28Year = m_Year
29End Property

30Public Property Let Year(tmp_Year As Integer)
31m_Year = tmp_Year
32End Property

33'--------------------
34'
35Public Property Get Month() As Integer
36Month = m_Month
37End Property

38Public Property Let Month(tmp_Month As Integer)
39m_Month = tmp_Month
40End Property

41'--------------------
42'
43Public Property Get Day() As Integer
44Day = m_Day
45End Property

46Public Property Let Day(tmp_Day As Integer)
47m_Day = tmp_Day
48End Property

49'--------------------
50'
51Public Property Get Second() As Integer
52Second = m_Second
53End Property

54Public Property Let Second(tmp_Second As Integer)
55m_Second = tmp_Second
56End Property

57
58
59
60Public Property Get Hour() As Integer
61Hour = m_Hour
62End Property

63Public Property Let Hour(tmp_Hour As Integer)
64m_Hour = tmp_Hour
65End Property

66Public Property Get Minute() As Integer
67Minute = m_Minute
68End Property

69Public Property Let Minute(tmp_Minute As Integer)
70m_Minute = tmp_Minute
71End Property

72
73
74
75
76Public Function setup() As Integer
77SystemTime.wDay = Day
78'SystemTime.wDayOfWeek = 1
79SystemTime.wMilliseconds = 0
80SystemTime.wMonth = Month
81SystemTime.wSecond = Second
82SystemTime.wYear = Year
83SystemTime.wHour = Hour
84SystemTime.wMinute = Minute
85setup = SetSystemTime(SystemTime)
86
87End Function

88

关于DLL的注册,通常VB在本机上编译后,会自动将DLL注册;但如果你要放到IIS服务器上,请使用如下方法:
1、将systimeset.dll拷贝到c:/WINDOWS/system32下;
2、在开始菜单的运行里面输入:regsvr32 systimeset.dll     (敲回车啊)
3、因为修改服务器的时间,INTERNET来宾帐户不具有该权限,设立权限请打开控制面版中的“管理工具”,然后打开“本地安全策略”--“用户权力指派”,双击“更改系统时间”,在弹出的对话框中点“添加用户或组”,将INETNET来宾帐户加入进来。
4、一切完毕后,将IIS服务重新启动一次。


在上面的设置完毕后,使用systimeset.dll组件的ASP代码页面如下:

将其编译为systimeset.dll的文件。

 1 < % @language = " vbscript "  % >
 2 < %
 3 function  SetTime(strYear,strMonth,strDay)
 4 response.Expires = 0
 5 set  obj = server.createobject( " systimeset.timeset " )
 6     obj.Year = strYear
 7     obj.Month = strMonth
 8     obj.Day = strDay
 9      if   Hour ( now ()) - 8 > 0   then
10     obj.Hour = Hour ( now ()) - 8
11      else
12     obj.Hour = 8
13      end   if
14     obj.Minute = Minute ( now ())
15     obj.Second = Second ( now ())
16     obj.setup
17
18 set  obj = Nothing
19 end function
20
21 if  request( " act " ) = " modi "   then
22      call  SetTime(request.Form( " strYear " ),request.Form( " strMonth " ),request.Form
23
24 ( " strDay " ))
25 end   if
26 % >
27 < form id = " form1 "  name = " form1 "  method = " post "  action = " ?act=modi " >
28    < table width = " 290 "  border = " 0 " >
29      < tr >
30        < td width = " 77 " >< input name = " strYear "  type = " text "  id = " strYear "  value = " <%=Year(now())%> "  
31
32 size = " 8 "   /></ td >
33        < td width = " 49 " >< input name = " strMonth "  type = " text "  id = " strMonth "  value = " <%=Month(now
34
35 ())% > "  size= " 5 "  /></td>
36        < td width = " 48 " >< input name = " strDay "  type = " text "  id = " strDay "  value = " <%=Day(now())%> "  
37
38 size = " 5 "   /></ td >
39        < td width = " 98 " >< input type = " submit "  name = " Submit "  value = " 修改日期 "   /></ td >
40      </ tr >
41    </ table >
42 </ form >
43

以上是所有实现的代码,有问题可以加我QQ:17020415

将上面的ASP代码页面粘贴到一个空的ASP文件中,然后在IIS中将站点设置好就可以了。(设置IIS虚拟目录也可以的。)


 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值