昨日、友人から WEB 経由で IIS サーバーの時刻を変更するというリクエストがありました。彼のシステムは ASP 3.0 で開発されているため、この例のコードは ASP.NET ではなく ASP ですが、私はこの記事を書きたいだけです。結局のところ、プログラムを書く鍵は言語ではなく、より重要なのは、プログラミング言語をツールとして理解し、プログラミングのアイデアを問題を解決するためのアイデアと方法として理解することです。あなたが書くプログラムは次のとおりです。 「ツール」を使用して、問題を解決するための「アイデア」に従って問題を解決します。
まず最初に、ネットユーザーの "Xiaohu" に感謝します。彼が VB 6.0 を使用して ASP 用の DLL コンポーネントを作成するという記事をインターネットで読んだ後、私が追加した DLL コードは数時間で書き直しました。年、月、日、第 2 の変更。
まず、VB 6.0 で ActiveX DLL プロジェクトを作成します。情報は次のとおりです。
プロジェクト名: systimeset
クラスモジュール名:timeset
VB6.0のクラスモジュールコードは以下の通りです。
1明示的なオプション
2SystemTime としてのプライベート SystemTime
3Private 宣言関数 SetSystemTime()Function SetSystemTime Lib "kernel32" (lpSystemTime As SystemTime) As Long
4プライベートタイプのシステム時刻
整数としての 5 w年
整数としての 6 wMonth
7 wDayOfWeek を整数として指定
8 wDay を整数として
9 整数としての時間
整数としての 10 wMinute
11 w秒を整数として
12 wミリ秒を整数として
13エンドタイプ
14
15薄暗い温度
16
17Private m_Hour を整数として
18プライベート m_Minute を整数として
19プライベート m_年を整数として
20プライベート m_Month を整数として
21プライベート m_Day を整数として
22Private m_Second As Integer
23
24' 変更者:Li Xiyuan 変更日:2006-08-31 変更項目:年、月、日、秒の演算を追加
25分----------------------
26 年
27パブリック プロパティ Get()Property Get Year() を整数として取得
28年 = m_年
29Endプロパティ
30パブリック プロパティ Let()Property Let Year(tmp_ Year As Integer)
31m_年 = tmp_年
32End プロパティ
33分----------------------
34 か月
35パブリック プロパティ Get()Property Get Month() を整数として取得
36Month = m_Month
37Endプロパティ
38パブリック プロパティ Let()Property Let Month(tmp_Month As Integer)
39m_Month = tmp_Month
40End プロパティ
41分-------
42分日
43パブリック プロパティ Get()Property Get Day() を整数として取得
44日 = m_日
45Endプロパティ
46パブリックプロパティLet()プロパティLet Day(tmp_Day As Integer)
47m_日 = tmp_日
48Endプロパティ
49分-------
50秒
51パブリック プロパティ Get()Property Get Second() As Integer
52秒 = m_秒
53Endプロパティ
54パブリック プロパティ Let()Property Let Second(tmp_Second As Integer)
55m_秒 = tmp_秒
56Endプロパティ
57
58
59
60パブリック プロパティ Get()Property Get Hour() を整数として取得
61時間 = m_時間
62Endプロパティ
63パブリック プロパティ Let()プロパティ Let Hour(tmp_Hour As Integer)
64分_時間 = tmp_時間
65Endプロパティ
66パブリック プロパティ Get()Property Get Minute() を整数として取得
67分 = m_分
68Endプロパティ
69パブリックプロパティLet()プロパティLet Minute(tmp_Minute As Integer)
70分 = tmp_分
71End プロパティ
72
73
74
75
76Public Function setup()Function setup() As Integer
77SystemTime.wDay = 日
78'システム時間.wDayOfWeek = 1
79SystemTime.wミリ秒 = 0
80SystemTime.wMonth = 月
81SystemTime.wSecond = 秒
82SystemTime.w Year = 年
83SystemTime.wHour = 時間
84SystemTime.wMinute = 分
85setup = SetSystemTime(SystemTime)
86
87終了関数
88
これを systimeset.dll というファイルにコンパイルします。
DLL の登録については、通常、ローカル マシン上でコンパイルされた後、VB が自動的に登録しますが、IIS サーバー上に DLL を置きたい場合は、次の方法を使用してください。
1. systimeset.dll を c:WINDOWSsystem32 にコピーします。
2. [実行] メニューで、次のように入力します: regsvr32 systimeset.dll (Enter キーを押します)
3. インターネット ゲスト アカウントにはサーバーの時刻を変更する権限がないため、権限を設定するには、コントロール パネルの [管理ツール] を開いてから、[ローカル セキュリティ ポリシー] - [ユーザー権利の割り当て] をダブルクリックして開きます。 「システム時刻の変更」をクリックし、ポップアップダイアログボックスで「ユーザーまたはグループの追加」をクリックし、INETNET ゲストアカウントを追加します。
4. すべてが完了したら、IIS サービスを一度再起動します。
上記の設定が完了すると、systimeset.dll コンポーネントを使用した ASP コード ページは次のようになります。
1<% @ language="vbscript" %>
2<%
3関数 SetTime(str年,str月,str日)
4response.Expires=0
5set obj=server.createobject("systimeset.timeset")
6 obj.年=str年
7 obj.Month=strMonth
8 obj.Day=strDay
9 if Hour(now())-8>0 then
10 obj.Hour=時間(now())-8
その他11
12 オブジェクト時間=8
13 終了の場合
14 obj.Minute=分(now())
15 obj.Second=Second(now())
16obj.セットアップ
17
18set obj=何もない
19エンド関数
20
21if request("act")="modi" then
22 call SetTime(request.Form("str Year"),request.Form("strMonth"),request.Form
23
24("strDay"))
25エンドの場合
26%>
27<form id="form1" name="form1" method="post" action="?act=modi">
28 <テーブル幅="290" ボーダー="0">
29 <tr>
30 <td width="77"><input name="str Year" type="text" id="str Year" value="<%= Year(now())%>"
31
32size="8" /></td>
33 <td width="49"><input name="strMonth" type="text" id="strMonth" value="<%=Month(現在)
34
35())%>" size="5" /></td>
36 <td width="48"><input name="strDay" type="text" id="strDay" value="<%=Day(now())%>"
37
38size="5" /></td>
39 <td width="98"><input type="submit" name="Submit" value="変更日" /></td>
40</tr>
41 </テーブル>
42</form>
43
上記は実装されたコードのすべてです。ご質問がある場合は、QQ: 17020415 までお問い合わせください。
上記の ASP コード ページを空の ASP ファイルに貼り付けて、IIS でサイトをセットアップします。 (IIS 仮想ディレクトリを設定することも可能です。)
http://www.cnblogs.com/lixyvip/archive/2006/09/02/492693.html