• 当前位置:首页>>编程开发A>>安全防御>>SC的介绍和教程
  • SC的介绍和教程
  •  

    写这个东西的目的在于让大家了解一下SC这个服务管理程序的使用,另一方面也是为了

    让大家更进一步的了解到NT,2000的服务的一些基础问题,如果有时间,希望大家好好看看。再来结合起上

    一次如何打开termservice服务的那篇文章,在服务方面大家应该比较了解了。用这个东西就可以删除在别

    人机器里留下的如ffsniffer,
    sksockerver这些东西,不用再担心,装上了删除不了。但是毕竟这个东西还是MS的产

    品,所以,如eventlog这样的服务,是不可以用它关闭的。累呀累呀,写了我整整一个早上,就是不知道有

    没有人看!

    我们知道在Mstools SDK,也就是在Resource
    Kit有一个很少有人知道的命令行软件,SC.exe,这个软件向所有的
    Windows NT和Windows 2000要求控制他们的API函数。我们可以在命令行里通过对这些

    函数设定参数的方式来设定

    他们(API)。SC.exe也可以显示服务的状态,同时也可以从状态结构区域里重新找到存

    储在里面的数值。它还可以
    列出远程计算机的服务函数或者是服务状况结构。
    SC.exe这个开发工具至少可以比服务控制面板程序和网络命令行界面(net.exe,这个东

    西可以告诉你一个服务是
    在运行中,还是停止,还是暂停。)这两个东西提供更多的细节和准确的信息。虽然上

    述两个东西在正常工作的
    情况下,对于完整的调试是非常好用的,但是如果有新的服务,或者新的代码被开发出

    来的时候,这两个工具提
    供的信息可能造成误导。这也就是我们需要用到SC的原因。
    下面举列说明,如果在开发阶段,你的服务在挂住在一个start-pending的时候,控制

    面板和net.exe同样报告服
    务是在运行的。但它挂在一个stop-pending的时候,net.exe报告它运行,而控制面板

    着报告它停止,如果你试着
    启动它,这是控制面板则会告诉你这个服务正在运行。难道这不是很困惑吗?呵呵!
    SC.exe可以让你询问服务的状况和取出存储在状态结构区域内的数值,控制面板和

    net.exe不提供服务完整的状况
    。但是无论如何,SC程序可以告诉你这个服务准确的情形,同样也可以给你看最后的

    checkpoint数和等待提示。
    这个checkpoint,我叫它检查点(我觉得他就像一个程序调试时置的断点),所以我们也

    可以把看作为一个调试工
    具,因为它可以提供一个关于在程序停止时还要沿着初始化继续前进多久准确报告。
    SC.exe也可以允许你调用很多的服务控制API函数,可以让你从命令行里改变大量的参

    数。这位服务开发者们提供
    了很多的优势。例如,它提供了一个方便的方式来创建或者在注册表和服务控制管理数

    据库中配置服务信息。开
    发者们不需要在手动的在注册表里单独的设置键值来配置服务,也不用重起机器来强迫

    服务控制管理数据库升级

    作为一个命令很工具,SC.exe可以用来测试你自己的系统,你可以设置一个批处理文件

    来使用不同的参数调用
    SC.exe来控制服务。这个很有用,如果你想看看你的服务不断的启动和停止,我没有试

    过哦!让一个服务一下子
    打开,一下子关闭,听上去很不错的。如果你的服务进程里面有多个进程的话,你可以

    保持一个进程继续运行不
    让它走开,然后让另一个不断的打开在关闭,还可以寻找一下内存缺乏导致不完全清楚

    的证据。
    下面介绍SC,SC QC,and SC QUERY
    SC使用这样的语法:
    1. SC [Servername] command Servicename [Optionname=
    Optionvalues]
    2. SC [command]
    这里使用第一种语法使用SC,使用第二种语法显示帮助。
    下面介绍各种参数。
    Servername
    可选择:可以使用双斜线,如\myserver,也可以是2.168.0.1来操作远程计算机。

    如果在本地计算机上操作
    就不用添加任何参数。
    Command
    下面列出SC可以使用的命令。
    Config----改变一个服务的配置。(长久的)
    continue--对一个服务送出一个继续控制的要求。
    Control----对一个服务送出一个控制。
    Create----创建一个服务。(增加到注册表中)
    delete----删除一个服务。(从注册表中删除)
    EnumDepend--列举服务的从属关系。
    GetDisplayName--获得一个服务的显示名称。
    GetKeyName--获得一个服务的服务键名。
    Interrogate--对一个服务送出一个询问控制要求。
    Pause----对一个服务送出一个暂停控制要求。
    Qc----询问一个服务的配置。
    Query----询问一个服务的状态,也可以列举服务的状态类型。
    Start----启动一个服务。
    Stop----对一个服务送出一个停止的要求。
    Servicename
    在注册表中为service key制定的名称。注意这个名称是不同于显示名称的(这个名称

    可以用net start和服务控
    制面板看到),而SC是使用服务键名来鉴别服务的。
    Optionname
    这个optionname和optionvalues参数允许你指定操作命令参数的名称和数值。注意,这

    一点很重要在操作名称和等
    号之间是没有空格的。一开始我不知道,结果………………,比如,start=

    optionvalues,这个很重要。
    Optionvalues可以是0,1,或者是更多的操作参数名称和数值对。
    如果你想要看每个命令的可以用的optionvalues,你可以使用sc command这样的格式。

    这会为你提供详细的帮助。
    Optionvalues
    为optionname的参数的名称指定它的数值。有效数值范围常常限制于哪一个参数的

    optionname。如果要列表请用
    sc command来询问每个命令。
    Comments
    很多的命令需要管理员权限,所以我想说,在你操作这些东西的时候最好是管理员。呵

    呵!
    当你键入SC而不带任何参数时,SC.exe会显示帮助信息和可用的命令。当你键入SC紧跟

    着命令名称时,你可以得
    到一个有关这个命令的详细列表。比如,键入sc create可以得到和create有关的列表


    但是除了一个命令,sc query,这会导出该系统中当前正在运行的所有服务和驱动程序

    的状态。
    当你使用start命令时,你可以传递一些参数(arguments)给服务的主函数,但是不是

    给服务进程的主函数。
    SC create
    这个命令可以在注册表和服务控制管理数据库建立一个入口。
    语法1
    sc [servername] create Servicename [Optionname= Optionvalues]
    这里的servername,servicename,optionname,optionvalues和上面的一样,这里就

    不多说了。这里我们详细说

    明一下optionname和optionvalues。
    Optionname--Optionvalues
    描述
    type=----own, share, interact, kernel, filesys
    关于建立服务的类型,选项值包括驱动程序使用的类型,默认是share。
    Start=----boot, sys tem, auto, demand, disabled
    关于启动服务的类型,选项值包括驱动程序使用的类型,默认是demand(手动)。
    Error=----normal, severe, critical, ignore
    当服务在导入失败错误的严重性,默认是normal。
    binPath=--(string)
    服务二进制文件的路径名,这里没有默认值,这个字符串是必须设置的。
    Group=----(string)
    这个服务属于的组,这个组的列表保存在注册表中的ServiceGroupOrder下。默认是

    nothing。
    Tag=----(string)
    如果这个字符串被设置为yes,sc可以从CreateService
    call中得到一个tagId。然而,SC并不显示这个标签,所
    以使用这个没有多少意义。默认是nothing
    depend=----(space separated string)有空格的字符串。
    在这个服务启动前必须启动的服务的名称或者是组。
    Obj=----(string)
    账号运行使用的名称,也可以说是登陆身份。默认是localsys tem
    Displayname=--(string)
    一个为在用户界面程序中鉴别各个服务使用的字符串。
    Password=--(string)
    一个密码,如果一个不同于localsys tem的账号使用时需要使用这个。
    Optionvalues
    Optionname参数名称的数值列表。参考optionname。当我们输入一个字符串时,如果输

    入一个空的引用这意味着
    一个空的字符串将被导入。
    Comments
    The SC CREATE command performs the operations of the
    CreateService API function.
    这个sc create命令执行CreateService API函数的操作。详细请见CreateService。
    例1
    下面这个例子在一台叫做(\myserver)的计算机上为一个叫“NewService”的服务建

    立的一个注册表登记。
    Sc \myserver create NewService binpath= c:winntsys
    tem32NewServ.exe
    按照默认,这个服务会建立一个WIN32_SHARE_PROCESS使用SERVICE_DEMAND_START启动

    方式。这将不会有任何从属

    关系,也将会按照localsys tem安全上下关系来运行。
    例2
    下面这个例

  • 上一篇:鲜为人知的“Windows 2000/XP受限”问题
    下一篇:ipsecpol的规则脚本编写