日期:2011-10-23 浏览次数:20882 次
昨天一个朋友有个需求,是要通过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=st