用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的類模塊代碼如下:
首先,要感謝網友“小虎”,我是在網上看了他寫的一篇關于用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()Function SetSystemTime Lib "kernel32" (lpSystemTime As SystemTime) As Long
4
Private 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
13
End Type
14
15
Dim tmp
16
17
Private m_Hour As Integer
18
Private m_Minute As Integer
19
Private m_Year As Integer
20
Private m_Month As Integer
21
Private m_Day As Integer
22
Private m_Second As Integer
23
24
'由李錫遠修改 修改日期:2006-08-31 修改項目:增加對年、月、日、秒的操作
25
'--------------------
26
'年
27
Public Property Get()Property Get Year() As Integer
28
Year = m_Year
29
End Property
30
Public Property Let()Property Let Year(tmp_Year As Integer)
31
m_Year = tmp_Year
32
End Property
33
'--------------------
34
'月
35
Public Property Get()Property Get Month() As Integer
36
Month = m_Month
37
End Property
38
Public Property Let()Property Let Month(tmp_Month As Integer)
39
m_Month = tmp_Month
40
End Property
41
'--------------------
42
'日
43
Public Property Get()Property Get Day() As Integer
44
Day = m_Day
45
End Property
46
Public Property Let()Property Let Day(tmp_Day As Integer)
47
m_Day = tmp_Day
48
End Property
49
'--------------------
50
'秒
51
Public Property Get()Property Get Second() As Integer
52
Second = m_Second
53
End Property
54
Public Property Let()Property Let Second(tmp_Second As Integer)
55
m_Second = tmp_Second
56
End Property
57
58
59
60
Public Property Get()Property Get Hour() As Integer
61
Hour = m_Hour
62
End Property
63
Public Property Let()Property Let Hour(tmp_Hour As Integer)
64
m_Hour = tmp_Hour
65
End Property
66
Public Property Get()Property Get Minute() As Integer
67
Minute = m_Minute
68
End Property
69
Public Property Let()Property Let Minute(tmp_Minute As Integer)
70
m_Minute = tmp_Minute
71
End Property
72
73
74
75
76
Public Function setup()Function setup() As Integer
77
SystemTime.wDay = Day
78
'SystemTime.wDayOfWeek = 1
79
SystemTime.wMilliseconds = 0
80
SystemTime.wMonth = Month
81
SystemTime.wSecond = Second
82
SystemTime.wYear = Year
83
SystemTime.wHour = Hour
84
SystemTime.wMinute = Minute
85
setup = SetSystemTime(SystemTime)
86
87
End Function
88
關于DLL的注冊,通常VB在本機上編譯后,會自動將DLL注冊;但如果你要放到IIS服務器上,請使用如下方法:
1、將systimeset.dll拷貝到c:WINDOWSsystem32下;
2、在開始菜單的運行里面輸入:regsvr32 systimeset.dll (敲回車啊)
3、因為修改服務器的時間,INTERNET來賓帳戶不具有該權限,設立權限請打開控制面版中的“管理工具”,然后打開“本地安全策略”--“用戶權力指派”,雙擊“更改系統時間”,在彈出的對話框中點“添加用戶或組”,將INETNET來賓帳戶加入進來。
4、一切完畢后,將IIS服務重新啟動一次。
在上面的設置完畢后,使用systimeset.dll組件的ASP代碼頁面如下:
Option Explicit2
Private SystemTime As SystemTime3

Private Declare Function SetSystemTime()Function SetSystemTime Lib "kernel32" (lpSystemTime As SystemTime) As Long4
Private Type SystemTime5
wYear As Integer6
wMonth As Integer7
wDayOfWeek As Integer8
wDay As Integer9
wHour As Integer10
wMinute As Integer11
wSecond As Integer12
wMilliseconds As Integer13
End Type14

15
Dim tmp16

17
Private m_Hour As Integer18
Private m_Minute As Integer19
Private m_Year As Integer20
Private m_Month As Integer21
Private m_Day As Integer22
Private m_Second As Integer23

24
'由李錫遠修改 修改日期:2006-08-31 修改項目:增加對年、月、日、秒的操作25
'--------------------26
'年27

Public Property Get()Property Get Year() As Integer28
Year = m_Year29
End Property30

Public Property Let()Property Let Year(tmp_Year As Integer)31
m_Year = tmp_Year32
End Property33
'--------------------34
'月35

Public Property Get()Property Get Month() As Integer36
Month = m_Month37
End Property38

Public Property Let()Property Let Month(tmp_Month As Integer)39
m_Month = tmp_Month40
End Property41
'--------------------42
'日43

Public Property Get()Property Get Day() As Integer44
Day = m_Day45
End Property46

Public Property Let()Property Let Day(tmp_Day As Integer)47
m_Day = tmp_Day48
End Property49
'--------------------50
'秒51

Public Property Get()Property Get Second() As Integer52
Second = m_Second53
End Property54

Public Property Let()Property Let Second(tmp_Second As Integer)55
m_Second = tmp_Second56
End Property57

58

59

60

Public Property Get()Property Get Hour() As Integer61
Hour = m_Hour62
End Property63

Public Property Let()Property Let Hour(tmp_Hour As Integer)64
m_Hour = tmp_Hour65
End Property66

Public Property Get()Property Get Minute() As Integer67
Minute = m_Minute68
End Property69

Public Property Let()Property Let Minute(tmp_Minute As Integer)70
m_Minute = tmp_Minute71
End Property72

73

74

75

76

Public Function setup()Function setup() As Integer77
SystemTime.wDay = Day78
'SystemTime.wDayOfWeek = 179
SystemTime.wMilliseconds = 080
SystemTime.wMonth = Month81
SystemTime.wSecond = Second82
SystemTime.wYear = Year83
SystemTime.wHour = Hour84
SystemTime.wMinute = Minute85
setup = SetSystemTime(SystemTime)86

87
End Function88

關于DLL的注冊,通常VB在本機上編譯后,會自動將DLL注冊;但如果你要放到IIS服務器上,請使用如下方法:
1、將systimeset.dll拷貝到c:WINDOWSsystem32下;
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
<% @language="vbscript" %>2
<%3
function SetTime(strYear,strMonth,strDay)4
response.Expires=05
set obj=server.createobject("systimeset.timeset")6
obj.Year=strYear7
obj.Month=strMonth8
obj.Day=strDay9
if Hour(now())-8>0 then10
obj.Hour=Hour(now())-811
else12
obj.Hour=813
end if14
obj.Minute=Minute(now())15
obj.Second=Second(now())16
obj.setup17

18
set obj=Nothing19
end function20

21
if request("act")="modi" then22
call SetTime(request.Form("strYear"),request.Form("strMonth"),request.Form23

24
("strDay"))25
end if26
%>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(now34

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虛擬目錄也可以的。)