|
|
我们在使用电脑时,为了保护自己的隐私或出于其它安全上的考虑,常常在建立用户帐户时,加有密码,特别是在许多人共同享有一台电脑时, 不同的用户将采用自己的密码登录到Windows XP操作系统
一、创建密码重设盘
创建密码重设盘的目的,是为了在用户忘记密码的情况下,能够安全快捷地以新的密码恢复工作。建议每个本地用户都制作一张密码重设盘,并将它保存在安全地方,这样当忘记了自己的密码时,就可使用密码重设盘来重新设定登录密码,从而使用户能继续访问此用户帐户,处理正常的工作事务。创建密码重设盘的方法:使用Windows XP的“忘记密码向导”,具体如下。
正常启动并登录到Windows XP后,同时按下“Ctrl + Alt + Del”,出现如图1所示“Windows 安全”窗口,点击选项中[更改密码(C)...]按钮,出现图2所示的更改密码窗口。这个窗口中,含有当前用户名、用户在网络或本地的位置、旧密码(用户原登录密码)、新密码以及对新密码的确认信息。其中,用户名为当前已经成功登录的用户名,用户在此有两个选择,要么更改密码,要么将当前用户的密码备份。点击左下角[备份(B)...]按钮,激活“忘记密码向导”,参见图3所示。

图1 Windows 安全”选项卡 
图2所示的更改密码对话框

图3 忘记密码向导
4.服务配置程序
编程人员和系统管理员可以使用服务配置程序来更改,查询已安装服务的信息。当然也可以通过注册表函数来访问相关资源。
服务的安装,删除和列举:我们可以使用相关的系统函数来创建,删除服务和查询所有服务的当前状态。
服务配置:系统管理员通过服务配置程序来控制服务的启动类型,显示名称和相关描述信息。
三、Windows服务与编程
Windows服务编程包括几方面的内容,下面我们将从服务控制程序,服务程序和服务配置程序的角度介绍服务编程相关的内容。
执行服务控制程序的相关函数前,我们需要获得一个服务对象的句柄,方式有两种:由OpenSCManager来获得一台特定主机的服务控制管理器数据库的句柄;使用OpenService或CreateService函数来获得某个服务对象的句柄。
服务控制请求:服务控制程序使用ControlService函数来发送控制请求到正在运行的服务程序。它会向控制句柄函数发送一个特定的控制命令,可以是系统默认的,也可以是用户自定义的。而且每个服务都会确定自己将会接收的控制命令列表。使用QueryServiceStatus函数时,在返回的dwControlsAccepted参数中表明服务程序将会接收的控制命令。所有的服务都会接受SERVICE_CONTROL_INTERROGATE命令。
2.服务程序
一个服务程序内可以包含一个服务或多个服务的执行代码,但是它们都拥有固定的三个部分:服务main函数,服务ServiceMain函数和服务Control Handler函数。
服务main函数:服务程序通常是以控制台的方式存在的,所以它们的入口点都是main函数。在服务控制管理器开始一个服务程序时,会等待StartServiceCtrlDispatcher函数的执行。如果服务类型是SERVICE_WIN32_OWN_PROCESS就会立即调用StartServiceCtrlDispatcher函数的执行;如果服务类型是SERVICE_WIN32_SHARE_PROCESS,通常在初始化所有服务之后再调用它。StartServiceCtrlDispatcher函数的参数就是一个SERVICE_TABLE_ENTRY结构,它包含了进程内所有服务的名称和服务入口点。
服务ServiceMain函数:函数ServiceMain是服务的入口点。在服务控制程序请求一个新的服务启动时,服务控制管理器启动一个服务,并发送一个开始请求到控制调度程序,而后控制调度程序创建一个新线程来执行ServiceMain函数。ServiceMain须执行以下的任务:调用RegisterServiceCtrlHandler函数注册一个HandlerEx函数来向服务发送控制请求信息,返回值是服务状态句柄用来向服务控制管理器传送服务状态。初始化后调用SetServiceStatus函数设置服务状态为SERVICE_RUNNING。最后,就是执行服务所要完成的任务。
服务Control Handler函数:每个服务都有一个控制句柄HandlerEx函数。它会在服务进程从服务控制程序接收到一个控制请求时被控制调度程序所调用。无论何时在HandlerEx函数被调用时,都要调用SetServiceStatus函数向服务控制管理器报告它当前的状态。在用户关闭系统时,所有的控制句柄都会调用带有SERVICE_ACCEPT_SHUTDOW控制代码的SetServiceStatus函数来接收NSERVICE_CONTROL_SHUTDOWN控制代码。
3.服务配置程序
服务配置程序可以更改或查询服务的当前配置信息。在调用服务配置函数之前,必须获得一个服务对象的句柄,当然我们可以通过调用OpenSCManager,OpenService或CreateService函数来获得。
创建,删除服务:服务配置程序使用CreateService函数在服务控制管理器的数据库中安装一个新服务,它会提供服务的名称和相关的配置信息并存储在数据库中。服务配置程序则使用DeleteService函数从数据库中删除一个已经安装的服务。
图3所示窗口中,包含了“忘记密码向导”所要做的工作、目的等信息。点击[下一步]出现忘记密码向导的第二步——创建密码重设盘,参见图4。

图4 创建密码重设盘
这里,你可以选择软盘驱动器(软盘),或移动型外部存储媒体,来保存本用户帐户的密码信息。我们选择“3.5 软盘(A:)”,点击[下一步],出现如图5所示忘记密码向导的第三步——当前用户帐户密码,此时请输入当前用户账户的密码,只有正确输入密码后,向导才可以继续创建工作,否则弹出信息窗口“您输入的密码对此账户是不正确的,请再输入一次。”。当正确地填入了当前用户的密码后,点击[下一步]。
在第一次使用忘记密码向导时,点击[下一步]后,系统将自动地向外部存储媒体写入用户的密码数据,如果您已经使用过一次“忘记密码向导”或已经创建了密码重设盘,那么就没有必要再进行第二次或更多次的写入,因为有了一张密码重设盘,可以被本用户帐户长期使用,如果您还想再建一次,那么请点击“是”,系统自动检测存储媒体中是否已经含有本用户的密码信息,如果有,还将报出确认信息:“此用户已经有一个重设盘,创建新的将使旧的不可用,您想继续吗?”点击[是(Y)]。

图5 当前用户帐户密码

