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

80酷酷网    80kuku.com

  asp+|web|服务器 

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

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

首先,在VB6.0中建立一个ActiveXDll工程项目,信息如下:

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

VB6.0的类模块代码如下:


 1OptionExplicit
 2PrivateSystemTimeAsSystemTime
 3PrivateDeclareFunctionSetSystemTime()FunctionSetSystemTimeLib"kernel32"(lpSystemTimeAsSystemTime)AsLong
 4PrivateTypeSystemTime
 5       wYearAsInteger
 6       wMonthAsInteger
 7       wDayOfWeekAsInteger
 8       wDayAsInteger
 9       wHourAsInteger
10       wMinuteAsInteger
11       wSecondAsInteger
12       wMillisecondsAsInteger
13EndType
14
15Dimtmp
16
17Privatem_HourAsInteger
18Privatem_MinuteAsInteger
19Privatem_YearAsInteger
20Privatem_MonthAsInteger
21Privatem_DayAsInteger
22Privatem_SecondAsInteger
23
24'由李锡远修改    修改日期:2006-08-31    修改项目:增加对年、月、日、秒的操作
25'--------------------
26'年
27PublicPropertyGet()PropertyGetYear()AsInteger
28Year=m_Year
29EndProperty
30PublicPropertyLet()PropertyLetYear(tmp_YearAsInteger)
31m_Year=tmp_Year
32EndProperty
33'--------------------
34'月
35PublicPropertyGet()PropertyGetMonth()AsInteger
36Month=m_Month
37EndProperty
38PublicPropertyLet()PropertyLetMonth(tmp_MonthAsInteger)
39m_Month=tmp_Month
40EndProperty
41'--------------------
42'日
43PublicPropertyGet()PropertyGetDay()AsInteger
44Day=m_Day
45EndProperty
46PublicPropertyLet()PropertyLetDay(tmp_DayAsInteger)
47m_Day=tmp_Day
48EndProperty
49'--------------------
50'秒
51PublicPropertyGet()PropertyGetSecond()AsInteger
52Second=m_Second
53EndProperty
54PublicPropertyLet()PropertyLetSecond(tmp_SecondAsInteger)
55m_Second=tmp_Second
56EndProperty
57
58
59
60PublicPropertyGet()PropertyGetHour()AsInteger
61Hour=m_Hour
62EndProperty
63PublicPropertyLet()PropertyLetHour(tmp_HourAsInteger)
64m_Hour=tmp_Hour
65EndProperty
66PublicPropertyGet()PropertyGetMinute()AsInteger
67Minute=m_Minute
68EndProperty
69PublicPropertyLet()PropertyLetMinute(tmp_MinuteAsInteger)
70m_Minute=tmp_Minute
71EndProperty
72
73
74
75
76PublicFunctionsetup()Functionsetup()AsInteger
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
87EndFunction
88
将其编译为systimeset.dll的文件。

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


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


 1<%language="vbscript"%>
 2<%
 3functionSetTime(strYear,strMonth,strDay)
 4response.Expires=0
 5setobj=server.createobject("systimeset.timeset")
 6   obj.Year=strYear
 7   obj.Month=strMonth
 8   obj.Day=strDay
 9   ifHour(now())-8>0then
10   obj.Hour=Hour(now())-8
11   else
12   obj.Hour=8
13   endif
14   obj.Minute=Minute(now())
15   obj.Second=Second(now())
16   obj.setup
17
18setobj=Nothing
19endfunction
20
21ifrequest("act")="modi"then
22   callSetTime(request.Form("strYear"),request.Form("strMonth"),request.Form
23
24("strDay"))
25endif
26%>

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: