Resource Kit 中文版帮助 三

时间:2005-12-19 来源: 作者: 点击:
password= (string) 一个密码,如果一个不同于localsystem的账号使用时需要使用这个。 Optionvalue Optionname参数名称的数值列表。参考optionname。当我们输入一个字符串时,如果输入一个空的引用这意味着一个空的字符串将被导入。 Comments The SC CREATE command per
  password= (string)
一个密码,如果一个不同于localsystem的账号使用时需要使用这个。


Optionvalue
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:\winnt\system32\NewServ.exe


按照默认,这个服务会建立一个WIN32_SHARE_PROCESS使用SERVICE_DEMAND_START启动方式。这将不会有任何从属关系,也将会按照localsystem安全上下关系来运行。

例2

下面这个例子将在本地计算机上,建立一个服务,它将会是一个自动运行服务,并且运行在他自己的进程上。它从属于TDI组和NetBios服务上。注意,你必须在从属中间增加一个空格的引用。

sc create NewService binpath= c:\winnt\system32\NewServ.exe type= own
start= auto depend= "+TDI Netbios"

例3

服务开发者可以通过临时改变二进制路径(影像路径)的方式来将这个服务运行在内核调试器的上下关系中。下面这个例子就可以让我们看到如何改变服务的配置。

sc config NewService binpath= "ntsd -d c:\winnt\system32\Newserv.exe"
这个例子会引起服务控制管理器调用ntsd.exe使用下例的参数字符串:
"-d c:\nt\system32\NewServ.exe"

当系统装入newserv.exe时ntsd将会转而打断调试器,所以断点可以被设置在服务代码里。

SC QC

这个SC QC“询问配置”命令可以列出一个服务的配置信息和QUERY_SERVICE_CONFIG结构。

语法1
sc [Servername] qc Servicename [Buffersize]

Parameters
servername和servicename前面已经介绍过了,这里不再多说。

Buffersize,可选择的,列出缓冲区的尺寸。

Comments

SC QC命令显示了QUERY_SERVICE_CONFIG结构的内容。

以下是QUERY_SERVICE_CONFIG相应的区域。
TYPE dwServiceType
START_TYPE dwStartType
ERROR_CONTROL dwErrorControl
BINARY_PATH_NAME lpBinaryPathName
LOAD_ORDER_GROUP lpLoadOrderGroup
TAG dwTagId
DISPLAY_NAME lpDisplayName
DEPENDENCIES lpDependencies
SERVICE_START_NAME lpServiceStartName

例1

下面这个例子询问了在上面例子中建立的“NewService”服务的配置:

sc \\myserver qc NewService

sc显示下面的信息:

SERVICE_NAME: NewService
TYPE : 20 WIN32_SHARE_PROCESS
START_TYPE : 3 DEMAND_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : c:\winnt\system32\NewServ.exe
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : NewService
DEPENDENCIES :
SERVICE_START_NAME : LocalSystem

NewService有能力和其他的服务共享一个进程。但是它不是自动启动的。二进制文件名是NewServ.exe。这个服务不依靠与其它的的服务,而且运行在lcoalsystem的安全上下关系中。这些都是调用QueryServiceStatus基本的返回,如果还需要更多的细节届时,可以看看API函数文件。

SC QUERY

SC QUERY命令可以获得服务的信息。

语法:
sc [Servername] query { Servicename │ Optionname= Optionvalue... }

参数:

servername, servicename, optionname, optionvalue不在解释。只谈一下这个命令提供的数值。

Optionname Optionvalue
Description

type= driver, service, all
列举服务的类型,默认是service

state= active, inactive, all
列举服务的状态,默认是active

bufsize= (numeric value)
列举缓冲区的尺寸,默认是1024 bytes

ri= (numeric value)
但开始列举时,恢复指针的数字,默认是0

Optionvalue
同上。

Comments

SC QUERY命令可以显示SERVICE_STATUS结构的内容。

下面是SERVICE_STATUS结构相应的信息:
TYPE dwServiceType
STATE dwCurrentState, dwControlsAccepted
WIN32_EXIT_CODE dwWin32ExitCode
SERVICE_EXIT_CODE dwServiceSpecificExitCode
CHECKPOINT dwCheckPoint
WAIT_HINT dwWaitHint

在启动计算机后,使用SC QUERY命令会告诉你是否,或者不是一个启动服务的尝试。如果这个服务成功启动,WIN32_EXIT_CODE区间会将会包含一个0,当尝试不成功时,当它意识到这个服务不能够启动时,这个区间也会提供一个退出码给服务。

例子

查询“NewService"服务状态,键入:

sc query NewService

显示一下信息:

SERVICE_NAME: NewService
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 1 STOPPED
(NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 1077 (0x435)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0

注意,这里存在一个给这个服务的退出码,即使这个服务部不在运行,键入net helpmsg 1077,将会得到对1077错误信息的说明: 上次启动之后,仍未尝试引导服务。所以,这里我想说一句,希望大家可以活用net helpmsg,这会对你的学习有很大的帮助。

下面在对SC query的命令在说明一下:

列举活动服务和驱动程序状态,使用以下命令:
sc query

显示messenger服务,使用以下命令:
sc query messenger

只列举活动的驱动程序,使用以下命令:
sc query type= driver

列举Win32服务,使用以下命令:
sc query type= service

列举所有的服务和驱动程序,使用以下命令:
sc query state= all

用50 byte的缓冲区来进行列举,使用以下命令:
sc query bufsize= 50

在恢复列举时使用index=14,使用以下命令:
sc query ri=14

列举所有的交互式服务,使用以下命令:
sc query type= service type= interact

好了,说到这里。SC命令基本上已经说完了。希望大家好好看看,呵呵!相信会有帮助的!!

25. Scanreg.exe

又是个注册表工具,有没有人烦了?我都快烦了,呵呵!

一个注册表检查工具,基本上就是一个"registry GREP"。支持搜索本地或远程的Win一家老小的注册表中的任意东西。

scanreg -s string -k -v -d -r key -c -e -n

-s
要搜索的字符串

-r
开始搜索的root,默认是HKEY_CURRENT_USER

也可以使用以下的格式:
HKEY_LOCAL_MACHINE === lm
HKEY_CURRENT_USER === cu
HKEY_CLASSES_ROOT === cr
HKEY_USERS === us

-k
查询键。

-v 注意必须指定-k -v -d中的至少一个。
查询值。

-d
当然是查询数据。


-c (默认是不敏感)
大小写敏感。


-e (默认是返回所有合适的)
只返回却确合适的。


-n
输出的时候不使用颜色(默认是key红,values绿,data黄)真不知道微软的怎么想的!!看上去怪怪的,还有就是匹配的字符串都高亮标出。


最后来两个例子:


scanreg -s version -k -v -d


scanreg -s version -kvd <--居然这种独可以?


scanreg /s version /r \lm\software /kvde 没有关系,这种都是可以的,呵呵!


scanreg version \\hello\HKEY_LOCAL_MACHINE -d 操作远程的东东。


26. sclist.exe


可以列出当前运行或者是停止的服务。看看远程的机器也是功能之一,但是比起SC来说,还是太简单了!


sclist -r -s MachineName -?


-r
只显示正在运行的服务。


-s
只显示已经停止的服务。


Machinename
本地可以不指出。


这个简单大家自己做做,这里不举例了!!:) ,不要讲我偷懒哦!


27. Setx.exe


这个命令行工具提供了一种批量修改环境变量的方法,同时不需要使用任何编程方法或者是脚本。此外,除了可以获得变量和值之外还可以跟注册表的值挂上关系。在2000中除了setx.exe之外,其他没有任何一种命令行工具可以直接设置系统变量值。只有通过控制面板和注册表编辑器才能够设置。如果有人说可以用set命令的话, 实际上这个CMD的内部命令只能够设置当前控制台窗口的用户环境变量。 setx允许你通过Command Line Mode,Registry Mode,File Mode,这三种模式来设置环境变量。


a. Command-Line


setx variable value -m


variable
要设置的环境变量的名字。


value
要设置的值。


-m
设置计算机环境,默认设置是用户环境。


b. Registry Mode


setx variable -k hive\key\……\value -m


variable
要设置的环境变量的名字。


-k
指定变量设置会基于注册表中的信息。


hive\key\……\value
注册表路径,如:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\
TimeZoneInformation\StandardName

-m
同命令行模式。

c. File Mode

setx variable -f filename -a x,y │ -r x,y "string" -d d -x -m

-f filename
指定使用的文件名。

-a x,y
指定要搜索的绝对坐标或者是偏移量。

-r x,y "string"
指定从"string"的相对坐标或者是偏移。

-d d
指定附加的分隔符,后一个d表示,可以是",", "\"等等。系统有四个内建的分隔符是:space, tab,

carriage return, linefeed。附加的可以是任意的ASCII字符。

-x
显示文件坐标,这个时候-a, -r, -d会变忽略。

-m
在同上。

setx将变量写入到在注册表的主环境中去。用setx设置的变量将会在下一次启动的时候生效,这是2000的局限。当访问REG_MULTI_SZ时,只能访问到第一个项目。

目前setx只可以支持HKCU和HKLM两个hives。用Setx增加的值不可以用setx去掉,可以在控制面板里面改,也可以在注册表里面改,这种时候也可以用set把它置空。

但是还是来几个例子吧!

a.Command Line

Setx MACHINE COMPAQ
在用户环境中设置MICHINE为COMPAQ。

setx MYPATH %PATH%
设置MYPATH的值为当前PATH变量的值。

setx MYPATH ~PATH~
设置MYPATH总是和PATH环境的值保持一致。

b. Registry

Setx TZONE -k

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\
TimeZoneInformation\StandardName
设置TZONE的值为上面的键。比如:"Central Standard Time"

Setx BUILD -k "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows

NT\CurrentVersion\CurrentBuildNumber"
设置BUILD的值为当前的Windows NT版本号,如:1314。

------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容