用ASP+DLL实现WEB方式修改服务器时间
用ASP+DLL实现WEB方式修改服务器时间
发布时间:2016-12-29 来源:查字典编辑
摘要:昨天一个朋友有个需求,是要通过WEB方式,修改IIS服务器上的时间,由于他的系统是ASP3.0下开发的,所以本例子的代码是ASP的,不是AS...

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

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

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

工程名称:systimeset

类模块名称:timeset

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

复制代码 代码如下:

OptionExplicit

PrivateSystemTimeAsSystemTime

PrivateDeclareFunctionSetSystemTime()FunctionSetSystemTimeLib"kernel32"(lpSystemTimeAsSystemTime)AsLong

PrivateTypeSystemTime

wYearAsInteger

wMonthAsInteger

wDayOfWeekAsInteger

wDayAsInteger

wHourAsInteger

wMinuteAsInteger

wSecondAsInteger

wMillisecondsAsInteger

EndType

Dimtmp

Privatem_HourAsInteger

Privatem_MinuteAsInteger

Privatem_YearAsInteger

Privatem_MonthAsInteger

Privatem_DayAsInteger

Privatem_SecondAsInteger

'由李锡远修改修改日期:2006-08-31修改项目:增加对年、月、日、秒的操作

'--------------------

'年

PublicPropertyGet()PropertyGetYear()AsInteger

Year=m_Year

EndProperty

PublicPropertyLet()PropertyLetYear(tmp_YearAsInteger)

m_Year=tmp_Year

EndProperty

'--------------------

'月

PublicPropertyGet()PropertyGetMonth()AsInteger

Month=m_Month

EndProperty

PublicPropertyLet()PropertyLetMonth(tmp_MonthAsInteger)

m_Month=tmp_Month

EndProperty

'--------------------

'日

PublicPropertyGet()PropertyGetDay()AsInteger

Day=m_Day

EndProperty

PublicPropertyLet()PropertyLetDay(tmp_DayAsInteger)

m_Day=tmp_Day

EndProperty

'--------------------

'秒

PublicPropertyGet()PropertyGetSecond()AsInteger

Second=m_Second

EndProperty

PublicPropertyLet()PropertyLetSecond(tmp_SecondAsInteger)

m_Second=tmp_Second

EndProperty

PublicPropertyGet()PropertyGetHour()AsInteger

Hour=m_Hour

EndProperty

PublicPropertyLet()PropertyLetHour(tmp_HourAsInteger)

m_Hour=tmp_Hour

EndProperty

PublicPropertyGet()PropertyGetMinute()AsInteger

Minute=m_Minute

EndProperty

PublicPropertyLet()PropertyLetMinute(tmp_MinuteAsInteger)

m_Minute=tmp_Minute

EndProperty

PublicFunctionsetup()Functionsetup()AsInteger

SystemTime.wDay=Day

'SystemTime.wDayOfWeek=1

SystemTime.wMilliseconds=0

SystemTime.wMonth=Month

SystemTime.wSecond=Second

SystemTime.wYear=Year

SystemTime.wHour=Hour

SystemTime.wMinute=Minute

setup=SetSystemTime(SystemTime)

EndFunction

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

关于DLL的注册,通常VB在本机上编译后,会自动将DLL注册;但如果你要放到IIS服务器上,请使用如下方法:

1、将systimeset.dll拷贝到c:WINDOWSsystem32下;

2、在开始菜单的运行里面输入:regsvr32systimeset.dll(敲回车啊)

3、因为修改服务器的时间,INTERNET来宾帐户不具有该权限,设立权限请打开控制面版中的“管理工具”,然后打开“本地安全策略”--“用户权力指派”,双击“更改系统时间”,在弹出的对话框中点“添加用户或组”,将INETNET来宾帐户加入进来。

4、一切完毕后,将IIS服务重新启动一次。

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

复制代码 代码如下:

<%@language="vbscript"%>

<%

functionSetTime(strYear,strMonth,strDay)

response.Expires=0

setobj=server.createobject("systimeset.timeset")

obj.Year=strYear

obj.Month=strMonth

obj.Day=strDay

ifHour(now())-8>0then

obj.Hour=Hour(now())-8

else

obj.Hour=8

endif

obj.Minute=Minute(now())

obj.Second=Second(now())

obj.setup

setobj=Nothing

endfunction

ifrequest("act")="modi"then

callSetTime(request.Form("strYear"),request.Form("strMonth"),request.Form

("strDay"))

endif

%>

<formid="form1"name="form1"method="post"action="?act=modi">

<tablewidth="290"border="0">

<tr>

<tdwidth="77"><inputname="strYear"type="text"id="strYear"value="<%=Year(now())%>"size="8"/></td>

<tdwidth="49"><inputname="strMonth"type="text"id="strMonth"value="<%=Month(now())%>"size="5"/></td>

<tdwidth="48"><inputname="strDay"type="text"id="strDay"value="<%=Day(now())%>"size="5"/></td>

<tdwidth="98"><inputtype="submit"name="Submit"value="修改日期"/></td>

</tr>

</table>

</form>

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

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

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新ASP教程学习
热门ASP教程学习
编程开发子分类