﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-zhangheng-随笔分类-WINDOES操作系统</title><link>http://www.blogjava.net/zhangheng/category/25136.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 25 Aug 2007 06:59:29 GMT</lastBuildDate><pubDate>Sat, 25 Aug 2007 06:59:29 GMT</pubDate><ttl>60</ttl><item><title>组策略简介</title><link>http://www.blogjava.net/zhangheng/archive/2007/08/24/139088.html</link><dc:creator>siwei</dc:creator><author>siwei</author><pubDate>Fri, 24 Aug 2007 05:39:00 GMT</pubDate><guid>http://www.blogjava.net/zhangheng/archive/2007/08/24/139088.html</guid><wfw:comment>http://www.blogjava.net/zhangheng/comments/139088.html</wfw:comment><comments>http://www.blogjava.net/zhangheng/archive/2007/08/24/139088.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangheng/comments/commentRss/139088.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangheng/services/trackbacks/139088.html</trackback:ping><description><![CDATA[<div id=article_main _element_extended_="true">
<div>
<p>组策略对象（GPO）是基于活动目录（AD）的对象，用户可以通过它集中地对Win2K台式机和服务器系统进行配置，它的功能包括从NT 4.0台式机的锁定到安全性配置和软件安装等。 </p>
<p>这篇文章主要讲述组策略是如何对系统起作用的、系统内部的工作原理以及在Win2K环境中采用这一技术时应该注意的问题。 </p>
<p><strong>一、组策略是什么？</strong><br>GPO是一种与域、地址或组织单元相联系的物理策略。在NT 4.0系统中，一个单一的系统策略文件（例如ntconfig.pol）包括所有的可以执行的策略功能，但它依赖于用户计算机中的系统注册表的设置。在Win2K中，GPO包括文件和AD对象。通过组策略，可以指定基于注册表的设置、使用NT 4.0格式.adm模板文件的运行Win2K的本地计算机、域的安全设置和使用Windows安装程序的网络软件安装，这样在安装软件时就可以对文件夹进行重定向。 </p>
<p>微软管理控制台（MMC）中的组策略编辑器（GPE）插件与NT 4.0中的系统策略编辑器poledit.exe相当。在GPE中的每个功能节点（例如软件设置、Windows 设置、管理模块等）都是MMC插件扩展，在MMC插件中扩展是可选的管理工具，如果你是应用程序开发者，可以通过定制的扩展拓展GPO的功能，从而针对你的应用程序提供附加的策略控制。 </p>
<p>只有运行Win2K的系统可以执行组策略，运行NT 4.0和Windows 9x的客户机则无法识别到或运行具有AD架构的GPO。 </p>
<p><strong>二、组策略和AD</strong><br>要充分发挥GPO的功能，需要有AD域架构的支持，利用AD可以定义一个集中的策略，所有的Win2K服务器和工作站都可以采用它。然而，每台运行Win2K的计算机都有一个本地GPO（驻留在本地计算机文件系统上的GPO），通过本地GPO，可以为每台工作站指定一个策略，它在AD域中不起作用。例如，出于安全原因，你不会在AD域中配置公用的计算机。利用本地GPO，可以通过修改本地策略来得到安全性和对台式机的限制使用而无需利用基于AD域的GPO。访问本地GPO的方法有2种，第1种方法，在需要修改GPO的计算机的&#8220;开始&#8221;菜单上选择&#8220;运行&#8221;，然后键入：gpedit.msc。 </p>
<p>这个操作的作用与NT 4.0中的poledit.exe相同，可以打开本地策略文件。第2种方法，可以通过在MMC控制台中选择GPE插件，并选择本地或远程计算机来人工地编辑本地GPO。 </p>
<p>本地GPO支持除软件安装和文件夹重定向之外的所有缺省扩展，因此，只利用本地GPO你不能完成这些工作，如果想充分发挥GPO的功能，还是需要AD的支持。 </p>
<p><strong>三、GPO的多样性和继承</strong><br>在AD中，可以在域、组织单位（OU）或地址三个不同的层次上定义GPO。OU是AD中的一个容器，可以指派它对用户、组、计算机等对象进行管理，地址是网络上子网的集合，地址形成了AD的复制分界线。GPO的名字空间被划分为计算机配置和用户配置两个大类，只有用户和计算机可以使用GPO，象打印机对象甚至用户组都不能应用GPO。 </p>
<p>在一个域或组织单位（OU）中编辑策略的途径有几种。在活动目录用户或计算机MMC插件中，右击一个域或组织单位（OU），在菜单中选择&#8220;属性&#8221;，然后选择&#8220;组策略&#8221;标签。在编辑地址中的策略时，需要右击&#8220;活动目录地址和服务&#8221;插件，然后右击需要的地址得到其GPO。此外，还可以从&#8220;开始&#8221;菜单，选择&#8220;运行&#8221;，然后键入： mmc.exe 启动MMC，选择&#8220;控制台&#8221;，&#8220;增加/删除&#8221;插件，然后选择&#8220;组策略&#8221;插件、&#8220;浏览&#8221;，在AD域内的GPO就会显示出来，可以选择一个GPO进行编辑。 </p>
<p>根据GPO在AD名字空间中的不同位置，可以有几个GPO对用户对象或计算机对象起作用。只有域中的其他对象是通过继承生成时GPO才是通过继承生成的。Win2K通过下面的方式执行GPO，首先，操作系统执行现有的本地系统上的策略，然后，Win2K执行定义的地址级的GPO、域一级的GPO和基于OU的GPO，微软把这一优先顺序取其首个字母缩写为LSDOU（执行的顺序依次是本地、地址、域、OU层次的GPO），用户可以在这个链上的许多层次上定义GPO。我们以pilot域为例说明如何察看一个系统中的GPO，启动&#8220;活动目录用户和计算机MMC&#8221;工具，右击pilot域名，从菜单中选择&#8220;属性&#8221;项，然后选择组策略标签。在这个列表顶端的GPO（例如域范围的安全策略）有最高的优先权，因此，Win2K最后才会执行它。除了本地系统外，可以在每个层次上定义几个GPO，因此如果不能严格地管理GPO，就会出现不必要的问题。 </p>
<p>GPO的继承模型与Novell公司的Zenworks策略方式截然不同。在Zenworks中，如果在Novell目录服务（NDS）树上的不同点使用多个策略包，只有距离用户对象最近的策略包才起作用。在Win2K中，如果在AD的不同层次上定义四个GPO，操作系统使用&#8220;LSDOU&#8221;优先顺序来执行这些策略，对计算机或用户的作用是这四个策略执行的&#8220;和&#8221;。此外，有时在一个GPO中的设置会被其他GPO中的设置抵销。通过AD级GPO，用户可以拥有更多的策略控制委托，例如，公司的安全部门负责在域一级上设计用于所有系统设备的安全GPO。通过使用GPO,可以让某个OU的系统管理员拥有在OU上安装软件的权利。在Zenworks模型中，必须在希望使用策略的所有层次上复制这些策略，而且策略对用户或计算机对象的作用并非是所有策略的&#8220;和&#8221;。 </p>
<p>为了进一步地控制GPO，微软提供了三种设置来限制GPO继承的复杂性。在地址、域、OU三个层次上用户都可以通过选择一个检查框阻止从更高一个层次上进行继承，同样，在每一个层次上，用户可以选择缺省的域策略选项，方法是打开&#8220;活动目录用户和计算机&#8221;插件，右击GPO所在的域或OU，从菜单中选择&#8220;属性&#8221;，然后选择&#8220;组策略&#8221;标签。让你希望修改的项目变亮，然后选择&#8220;选项&#8221;按钮，可供选择的选项有&#8220;不覆盖&#8221;或&#8220;禁止&#8221;。如果选择了&#8220;不覆盖&#8221;选项，即使选择了不能继承的检查框，该GPO还是会起作用。如果想在任何一个地方执行一个GPO时，这一功能就很有用处。如果一个OU的管理员试图阻止对安全策略的继承，包含安全策略的GPO仍然会被系统执行。&#8220;禁止&#8221;检查框可以完全禁止一个GPO执行，这一功能在你对一个GPO进行编辑而不想让其他的用户执行它时特别有效。 </p>
<p><strong>四、GPO的执行和过滤</strong><br>只有用户和计算机对象才能执行组策略。在计算机的启动和关闭时，Win2K执行在GPO的计算机配置部分定义的策略，在用户登录和注销时，Win2K执行在GPO中用户配置部分定义的策略。事实上，在用户登录时可以通过手动方式执行一些的策略，例如可以在命令行方式下运行secedit.exe程序执行安全策略应用程序。此外，通过管理员模块策略可以定期地对用户和计算机的GPO设置进行刷新，缺省情况下，这种刷新每90分钟进行一次，这种刷新可以使其他用户不容易修改通过组策略定义的策略。但是，软件安装策略是不会刷新的，因为没有人希望周期性地改变策略引起软件的&#8220;?载&#8221;，尤其是有其他用户在使用时，就更是这样了。计算机、用户对象只有在计算机启动或用户登录时才会软件安装策略。 </p>
<p>尽管只有AD中的计算机和用户对象才能执行GPO，但我们可以过滤GPO的效果。使用Win2K中的安全组、应用组策略━━这是Win2K中的一项新的安全特性，可以使特定的用户组不能执行某一个GPO。右击MMC中GPO的名字，选择&#8220;属性&#8221;，然后再选择&#8220;安全&#8221;，就可以看到GPO目前的安全设置。认证用户组具有应用组策略权利，从而附属这一GPO的所有用户可以执行它。在Win2K中，安全组可以包括用户和计算机对象。因此，利用安全组可以仔细地调整用户、计算机对象如何执行一个GPO。你还可以对个别的应用程序应用安全组，可以指派一个GPO的软件安装部分。例如，假设你在一个GPO中发布10个应用程序，可以指定只让金融用户用户组访问其中的5个，其他用户登录到这个域时，它们也不会发现这5个应用程序。 </p>
<p><strong>五、GPO的内部构成</strong><br>一个GPO是由两部分组成的：组策略容器（GPC）和组策略模板（GPT）。GPC是GPO在AD中的一个实例，在一个特殊的被称作系统的容器内有一个128位的全球唯一的ID码（GUID）。在&#8220;活动用户目录用户和计算机&#8221;插件中选择&#8220;浏览&#8221;，从MMC菜单中选择&#8220;高级属性&#8221;，就可以看到&#8220;系统&#8221;容器。GPT是组策略在Win2K文件系统中的表现，与一个GPO有关的所有文件依赖于GPT。 </p>
<p><strong>六、GPO带来的难题</strong><br>虽然GPO的功能很强大，但要掌握它可不容易。最难掌握的是如何判断一条有效的策略如何对域中的计算机或用户起作用，由于GPO可以存在于AD链中不同的层次上，这种判断就特别困难。同时，由于可以指派一个GPO的控制，因此不大容易清楚其他的GPO是否会对你没有控制权的容器中的GPO有影响。因此，计算一个计算机或用户对象接收的&#8220;策略的结果集&#8221;（RSoP）是相当困难的。尽管微软还没有提供计算RSoP的工具，但已经有第三方厂商提供了相应的计算RSoP的工具。 </p>
<p>另一个难题是策略的执行。如果在AD链上的许多层次上都存在有GPO，在用户每次登录或系统启动时都会执行所有的GPO。在Win2K系统中，微软推出了一些新的功能来优化系统的性能。首先，GPO的版本信息依赖于工作站和GPO，如果GPO没有变化，系统就不会执行它。另外，在GPE的属性页上，可以禁止用户或计算机对GPO的执行。如果建立一个GPO用来分发关闭系统或启动系统时的脚本，禁用GPO的用户配置部分，这样会使工作站不能解析GPO并判断它是否已经发生了什么变化。 </p>
<p>最后的一个难题起源于GPC和GPT是两个单独的实体。GPC是AD中的一个对象，它与GPT中包含的文件的复制不同步，这意味着创建一个GPO时，在GPT开始向域控制器上的Sysvol复制文件之前GPC可能已经开始进行复制了。 </p>
<p>所有问题的起源都是由于AD使用了一种多主体的复制模式。理论上，当另一个系统管理员在一个域控制器上编辑一个GPO时，你也可以在某个域上对它进行编辑。因此，当建立一个GPE时，缺省状态下指的是在&#8220;操作主体&#8221;中充当PDC的域控制器。（&#8220;操作主体&#8221;是AD基础结构中的一系列托管功能，用作PDC的服务器可以兼容运行NT和Win9x的工作站。）一般情况下，可以通过只向少数的系统管理员授予编辑GPO的权利来避免这种情况的发生，并保证如果有人在编辑GPO时，让其他的人都知道。此外，需要注意的是，在对一个GPO进行编辑时，要&#8220;禁止&#8221;它，修改结束后重新使能。</p>
</div>
</div>
<!-- google_ad_section_end -->
<img src ="http://www.blogjava.net/zhangheng/aggbug/139088.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangheng/" target="_blank">siwei</a> 2007-08-24 13:39 <a href="http://www.blogjava.net/zhangheng/archive/2007/08/24/139088.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Resource Kit 中文版帮助</title><link>http://www.blogjava.net/zhangheng/archive/2007/08/21/138405.html</link><dc:creator>siwei</dc:creator><author>siwei</author><pubDate>Tue, 21 Aug 2007 08:54:00 GMT</pubDate><guid>http://www.blogjava.net/zhangheng/archive/2007/08/21/138405.html</guid><wfw:comment>http://www.blogjava.net/zhangheng/comments/138405.html</wfw:comment><comments>http://www.blogjava.net/zhangheng/archive/2007/08/21/138405.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangheng/comments/commentRss/138405.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangheng/services/trackbacks/138405.html</trackback:ping><description><![CDATA[<p>概要 <br>Resource Kit实际上是Microsoft为管理员提供的一套额外的工具集，包括了超过400个各种工具，vbs，dll，msc，涵盖了管理TCP/IP，网络，注册表，安全，远程管理，配置，Batch文件，以及操作系统的其他方面。可以让你更容易的管理一个NT系统。不得不承认这是一个非常庞大的工具集，包括到了已经被人们所遗忘2K所应该具有的功能。当你了解到了里面一些工具的性能以后，你将会知道即使仅仅只是一个C2级的操作系统也具有相当的安全性，对于细心配置的系统，攻击也只能伤其表面。但是，但是任何东西都有他的两面性，ResKit就非常具有代表性，在Hacker群体中大家习惯把这个玩意叫做&#8220;Hacker的工具箱&#8221;。当然如果你想当一个Hacker你得掌握里面的东西，而想当一个好的administrator你也得掌握里面的东西。希望大家都可以好好看看。 <br><br>第一部分：管理你的计算机 <br><br>1. Appsec.exe （Application Security） <br><br>Appsec.exe是一个基于GUI的应用程序，它允许管理员在一个多用户环境下限制普通用户访问一组网络上经预订的应用程序。启用这种应用程序安全性，将会导致系统拒绝普通用户执行或使用一个未经许可的应用程序。大家 看这是不是一个很有用的工具呢？对某些特定的程序进行限制以后，可以减少一些Hacker入侵的可能，下面我们 继续讨论。 <br><br>对于2000来说一个显著的特点就是引入了GPO（Group Policy）这种东西，实际上就是一个界面化了的注册表编辑器，但是因为GPO的存在2000大大提高了他的安全性。一般来说，我们可以通过配置GPO从启动菜单和桌面 上隐藏一个应用程序，但是不能禁止用户用其它手段访问它，Appsec增加了这种安全性，可以禁止用户执行应用 程序甚至是从命令行模式或者使用其他的应用程序。Microsoft的建议是和GPO一起使用，放在Terminal Server上运行或者说是在应用程序运行的机器上使用。Appsec对于应用程序的限制还算严格，除了应用程序的名称以外还要包括该应用程序的全路径，只有二者都附和才能够运行。 <br><br>下面提几点注意： <br>a. 只有管理员或管理员组的成员可以运行所有程序，用户（包括PowerUser组）只能运行列表中的应用程序。 <br>b. Appsec第一次启用时，Terminal Server的会话必须中断，否则Appsec将不能在本次会话中启用。 <br>c. 实际上Appsec只能限制调用CreateProcess方法的应用程序，不能限制使用NTCreateProcess方法的程序，但是这种程序非常的少见。 <br>d. Appsec只能限制32位的程序，但是在默认情况下，一旦启用appsec任何对16位程序的访问都是禁止的，但 是可以添加ntvdm.exe来使16位程序可以被访问。 <br>e. 我想这个也是Appsec最大的缺点，Appsec并不对程序本身进行检查，也就是所如果将该有效程序进行替换 的话，Appsec不会发现。所以说我们必须禁止用户替换和重命名应用程序，这可以用Security Template来做。 <br>f. 还有Appsec只可限制可执行文件，不可以是DLLs。 <br>g. Appsec的使用是对于计算机的，也就是说一经启用使用本机的用户都要受到限制。 <br><br>另外，应该要提到的一点是，按照Microsoft的要求，Appsec的列表中至少应该有： <br>\Wtsrv\explorer.exe <br>\Wtsrv\system32\cmd.exe <br>\Wtsrv\system32\net.exe <br>\Wtsrv\system32\regini.exe <br>\Wtsrv\system32\subst.exe <br>\Wtsrv\system32\systray.exe <br>\Wtsrv\system32\xcopy.exe <br>这么几项。 <br><br>当然啦！你去掉也是可以的，但是会造成用户难以正常使用。嗯，以我个人的建议，如果你想防止Hacker入侵去掉net.exe会有意想不到的收获，呵呵！cmd.exe也是不错的选择，如果不想管理员以外的任何人访问就统统去掉就好，后果你们试试就知道了。 <br><br>p.s. 这个程序所需要的文件Appsec.exe（这个倒是在），Appsec.hlp（这个也在），但是Appsec.dll， <br>psec.cnt，Instappsec.exe并没有包括在Resource Kit里面，要去网站上自己下载！！这简直是搞笑嘛！也 <br>只有Microsoft干得出来。你可以在这个地方下载这个hotfix: <br><font color=#006699>http://download.microsoft.com/download/win2000platform/Appsec/1.0/NT5/EN-US/appsec_hot</font> <br>fix.exe， </p>
<div id=nuvomgtkodissa style="DISPLAY: none">_G8g1t6=$0Vrb件</div>
<p>安装以后就可以用了。 启用以后，换个用户（不是管理员组）登陆本机随便点个应用程序，你就可以看到Access to specified device, path or file is denied的警告，很厉害的，哈哈！ <br><br>2. Cachemov.exe (Offline Files Cache Mover) <br><br>Cachemov.exe一个有趣的东东，用来移动离线文件的缓存（默认保存在根卷下），如果你觉得那东西在那个地方碍的你事的话，把它挪个地方也没有什么问题。这个工具比较简单就不再多说什么了，就一个GUI，然后选择 一个卷，它就自动帮你做完了，很简单。你也可以使用无人值守模式 cachemov -unattend x:\ 电脑自己搞 定，此时需要(Cchmvmsg.dll)。所有的结果会保存至应用程序日志。 只是注意一下，运行时需要管理员的身份，还有就是不能够移动到网络驱动器和可移动驱动器上去。移动以后不要改letter，不然你会有麻烦的！ <br><br>3. Defptr.exe （Default Printer） <br><br>如果你闲着没有事的话，可以用用这个东西。它允许你随意改变你的默认打印机，可以在可用的网络和本地打印机间交换，一旦运行以后会在右下角有个小图标（如果不想看到图标可以使用defptr -i), 这个东西可能对漫游用户会有一点好处吧！ <br><br>4. Delprof.exe（User Profile Deletion Utility） <br><br>删除用户的Profile时用的工具，本来这个是可以在System Properties里面做的。而这个工具可以在本地或 <br>是远程运行，看起来的好处就是可以指定多长时间不使用就删除，在处理比较多的用户的时候才显得出好处来，就那么个把的话，就自己做好了。稍微介绍一下语法好了。 <br><br>delprof /q /i /p /c:\\computername /days /? <br><br>/q 后台悄悄执行，不用确认。 <br>/i 忽略错误继续删除。 <br>/p 在删除前提示确认。 <br>/c:\\computername 这个不用解释了吧？ <br>/days 指定多少天不使用的Profile就删除，days用整数。 <br>/? 出现上面这些东东。 <br><br>5. DelSrv.exe （Delete Service） <br><br>一个拿来删除服务用的工具，使用起来非常简单，只要delsrv servicename就可以了。没有什么好说的。 <br><br>6. Dureg.exe （Registry Size Estimator） <br><br>这是一个用来评估你的注册表储存了多少数据的工具， </p>
<p id=kgpohkolmmnja style="DISPLAY: none">B*qp网2wE#&amp;SIj</p>
<p>可以从任何一个hive，subtree和subkey中读出。另外 <br><br>，这个工具还可以用来搜索注册表中的text字符串，这种搜索还可以具体到某个subtree中。 <br>这个工具主要用于得出注册表具体占用空间，对于开发人员和管理员来说都是一个非常有用的工具。虽然我们可以使用控制面板中的System选项和系统监视器中的Registry Quota in Use来监视注册表，但是如果你只想知道某个单独的Key或者是Subkey所占用的空间，<font id=pllihupbpfkwkne style="DISPLAY: none">?3o理-]?3Fn网专\lz</font>上面这些工具就无能为力了。 <br><br>语法： <br><br>dureg /cr /cu /u /lm /a /s│/d "registry_path" "string to search" <br><br>/a <br>表示查找整个注册表的大小。 <br><br>dureg /a <br>Size of HKEY_CLASSES_ROOT : 7740324 <br>Size of HKEY_USERS : 995732 <br>Size of HKEY_LOCAL_MACHINE : 17265663 <br><br>Total Registry data size: 26001719 <br><br>/cr "registry_path" <br>默认情况下，返回的是HKEY_CLASSES_ROOT的大小。 <br><br>/cu "registry_path" <br>默认情况下，返回的是HKEY_CURRENT_USER的大小。 <br><br>/lm "registry_path" <br>默认情况下，返回的是HKEY_LOCAL_MACHINE的大小。 <br><br>/u "registry_path" <br>默认情况下，返回的是HKEY_USERS的大小。 <br><br>以上四个选项都可以在 "registry_path"中填入该Subkey下的任意key。比如： <br>dureg /lm "software\microsoft",查找HKEY_LOCAL_MACHINE\Software\Microsoft key的大小。 <br><br>/s "string" <br>在注册表中搜索该字符串。比如： <br>dureg /s "run" 寻找和run相关的字符串。当然你也可以和/cr等这几个参数一起使用，<font id=wdalntarlwsgtuudwb style="DISPLAY: none">kS';`Bw育U8中L管1(mE专</font>比如：dureg /cr <br><br>/s "run"。 <br>会看到一大串显示，这里就不写出来了。 <br><br>7. Elogdmp.exe （Event Log Query Tool） <br><br>一个命令行工具用来导出选定的日志中的信息。这是在屏幕上进行显示，最好和Find或者是Findstr这样的工具 <br><br>一起使用，不然太难找到了。 <br><br>语法： <br><br>elogdmp -? computername eventlogtype <br><br>eventlogtype有Application, Security，System三种。 <br><br>比如： elogdmp hello application <br><br>这个工具可以远程使用，但是需要域管理员组或者是本地管理员组的成员才可以使用。 <br><br>8. Instsrv.exe （Service Installer) <br><br>嗯，Instsrv.exe一个命令行工具可以用来安装或者是删除可执行服务（.exe)，当然也可以给它们分配名字的 <br>语法： <br><br>instsrv Servicename pathtoexecuteable -a accountname -p accountpassword or Servicename remove <br><br>ServiceName <br>用来显示的名字，比如Alerter。 <br><br>PathToExecuteable <br>要安装服务文件的全路径，包括盘符在内。 <br><br>-a accountname <br>指定服务运行的帐户。 <br><br>-p accountpassword <br>帐户的密码。 <br><br>servicename remove <br>指定你想移出的服务。 <br><br>比如：你想安装一个bbb.exe作为一个bbb的服务。 <br>instsrv bbb "c:\program files\bbb.exe" <br>默认情况下，我们安装的服务是没有启动的，需要启动。而有些时候需要插入相应的注册表项。 <br><br>如果想指定这个服务在某个用户下运行： <br>instsrv bbb "c:\program files\bbb.exe -a hello\bbb -p xxx" <br>that's OK！ <br><br>如果要卸在的话: instsrv bbb Remove，注意删除之前要先Stop。 <br><br>这里我们再提到一个工具Srvinstw.exe，这是一个GUI模式的工具，所以用起来非常的简单，照着提示一步步做就可以了。它和Instsrv.exe的区别是这个东东可以在远程计算机上安装服务。它们都需要administrator 的特权，请记住。 <br><br>9. intfiltr.exe （Interrupt Filter) <br><br>这是一个在多CPU环境下用来调整CPU之间中断关系的工具，可以用来测试最优化的方案。我没有2个这种东西，这个程序就没有进行测试了！那个有的话，帮我试试，告诉我结果。我把它补全。 <br><br>10. Inuse.exe （File-In-Use Replace Utility） <br><br>一个命令行工具可以用来替换被锁定的操作系统文件，比如一些重要的DLL文件。这些文件会在下一次启动的时候被替换，根据微软的说法，这种替换会在下一次启动的Autochk完成之后，创建Paging Files之前。基本上来说，这个一个调试用的工具。该程序需要管理员身份运行。 <br><br>语法： <br><br>insuse -? source destinaion /y <br><br>source <br>你想用来替换的文件。可以使用完整的物理路径或者是UNC路径。 <br><br>destination <br>你要替换的文件。 <br><br>/y <br>表示确定。 <br><br>如果你想用一个远程文件来替换一个本地存在的文件可以使用下面的方法。 <br>inuse \\hello\winnt\abc.dll c:\winnt\abc.dll /y <br><br>11. Javareg.exe （Java/COM Registration Utility） <br><br>命令行工具可以用来注册Java classes，鄙人不懂Java这种高深的东西，连什么是classes都不知道，没有办 <br>法了，这一块就只好%￥＆&#8230;&#8230;&#8230;了，不好意思。有懂的人帮一下忙好了，呵呵！！ <br><br>12. Netsvc.exe （Command-line Service Controller） <br><br>一个命令行工具，<font id=hvnnuniprkb style="DISPLAY: none">DrL育\a09_[B</font>用来控制服务，和SC比较类似，但是在功能上要比后者少很多！用这个工具基本上可以进行远程启动，停止，暂停，继续服务或者查询一个服务的状态。基本上只要你是一个普通用户就可以执行这个命令，<font id=teewuthpnqptsjdlwsu style="DISPLAY: none">网KK.~|a~育TFN60T%中业G</font> 当然如果要启动和停止的话，就需要相应的权限了。 当然和SC相比Netsvc有很大的局限性，所以在这里我多说一点和服务有关的东西。在Win2k虽然你可以对各种服务进行查询，但是并不是所有的服务都可以直接关闭，比如Workstation这个服务，但奇怪的是Workstation这个服务有些时候会莫名其妙的丢失， </p>
<p id=trqbvblvarh style="DISPLAY: none">N%教\理软专U教bX</p>
<p>至今我还不知道原因，一旦丢失以后基本上就 需要重装了。我们继续话题，当一个用户有许多活动的连接存在的时候，你只可以查询或者是暂停该服务，而不能远程强迫服务停止。而如果有服务依靠别的服务才能运行的时候，我们也不能直接停止该服务。举一个简单的例子，Clipbook服务需要Network DDE服务才能运行，我们必须先停止CilpBook才能停止Network DDE。 <br><br>这里还要提到另外一种状况，就是当你停止一个不可以停止的服务的时候Netsvc会报告Service is running ，而该服务不能停止的原因有很多种，但是Netsvc并不会报告给你，太惨了！！此外，当一个服务不能被暂停的时候，这个鬼东西仍然会报告给你说Service is running，唉！所以说最好使用SC。 <br><br>语法： <br><br>netsvc command servicename \\computername /?│/help <br><br>command可以是以下几个命令： <br>/list <br>列出已经安装的服务，这个时候不使用servicename。 <br><br>/query <br>查询一个服务的状态。 <br><br>/start, /stop, /stop, /continue <br>这几个命令就不用解释了吧？字面意义都已经很清楚了。 <br><br>最后举两个例子吧！如： <br>netsvc /list \\hello <br><br>netsvc /query \\hello "Alerter" <br><br>netsvc Alerter \\hello /pause <br><br>更进一步具体的内容可以在SC那里看到， </p>
<div id=ktbptcqsqkh style="DISPLAY: none">W的网zMVi}`zH</div>
<p>这里不再多说。 <br></p>
<span id=ctl00_ContentPlaceHolder1_ArticleContent>
<p>13. Now.exe <br><br>Reskit里面比较无聊的命令之一，可以在STDOUT（Standard output)上输出一个带时间戳的东东。有点像 <br>ECHO命令。举例说明算了： <br><br>当我们打入ECHO bbb的时候，屏幕会显示bbb <br>C:\&gt;echo bbb <br>bbb <br><br>但是当我们用Now bbb的时候，会输出： <br>C:\&gt;now bbb <br><br>Sat Feb 16 22:31:34 2002 -- bbb <br>这种东西，不知道有什么用，呵呵！ <br><br>14. Pathman.exe <br><br>一个命令行工具可以修改系统路径和用户路径，当然这个工具还可以用来检查路径中的错误，有多余的头部分号，尾部分号，多个连接得分号，重复的添加和删除，增加重复的路径或是移出一个不存在的路径等等，但是不检查路径的有效性。 2K保留了两套路径，一个是统一的全局系统路径，另一组是每个用户个别的用户路径，当然为了保证兼容性，2000仍然保留了从Autoexec.bat装入路径。每个用户可以修改自己的用户路径，
<p id=cndkscalnqkefkmakiv>JA管HIGD$*O@专_8y3网%中</p>
而只有管理员可以修改系统路径，为了方便操作，微软就搞出了这个Pathman。 <br><br>语法： <br><br>pathman /as /au /rs /ru path <br><br>/as <br>增加分号隔开的系统路径。 <br><br>/au <br>增加分号隔开的用户路径。 <br><br>/rs <br>删除分号隔开的系统路径。 <br><br>/ru <br>删除分号隔开的用户路径。 <br><br>当修改完成以后，Pathman会广播信息给所有的顶端窗口提醒它们环境被改变了，这将会导致应用程序升级它们的环境，获得经修改的路径。 <br><br>举例说明： <br><br>添加c:\temp;C:\users\name;d:\utils为用户路径，
<div id=intsawcmkfceqceboj style="DISPLAY: none">ygE国HrjZ=._:`专R*aK</div>
当然，
<p id=ddiqwukhowakl style="DISPLAY: none">5$SlPJ*的j业*[i</p>
只是在它们不存在的时侯才添加。这个结果你可 <br>以在System properties的Environment Variable中看到。上面一栏是user的变量，下面是系统变量。 <br>实际上这个工具也有个好处就是添加和删除可以同时操作，你可以： <br>pathman /au C:\users\name /ru c:\users\name 呵呵！不过没有什么意思！ <br><br>15. Ptree.exe（Process Tree） <br><br>该程序可以允许你在本地或者是远程查询进程树，同样也可以Kill它们。2000默认情况下，允许Local <br>Administrators, Power Users, Users查询这些树，但是只有Local Administrators和Power Users可 <br><br>以Kill进程。 <br><br>就这个工具而言，它有这么几部分组成ptreedrv.sys（kernel-mode驱动程序），ptreesvc.exe和 <br>ptreesvcps.dll（2000的服务的程序，就是所ptree是需要在该计算机上安装一个服务）， <br>Ptreesvr.dll(COM+服务端)，ptree.exe（控制台客户端），Ptreeg.exe（GUI客户端，推荐使用这个，在 <br>DOS底下看到的东西太少，也不好看，还是GUI爽！而且还可以同时管理多台计算，不错吧！我是挺喜欢的，比Ctrl+Alt+Del出来的那个东西要好得多！） <br><br>这个程序并没有和Reskit一起安装，而实在Reskit的目录下生成一个名为Ptree的目录，底下有个ptree.msi <br>，要点击安装。同时由于这是一个基于COM+的程序，而安装ptreeCOM的时侯，需要MSDTC服务，注意不要把它关了，不然会导致ptree不能正常运行，而且只会提示不能找到服务，后来是查了错误日志才发现的，微软坑人 ！。我就因为这个弄了好一阵子，呵呵！ 使用嘛，很简单，GUI就不用说了，都有提示，说一下命令行模式吧！ <br><br>ptree -c computer -k│-kt process -?│/? <br><br>-c computer <br>当要管理的是远程主机的时侯才需要用的这个参数，如果是本机就不要啦，直接ptree就可以了。 <br><br>-k process <br>干掉后面指定的进程。 <br>这里的process可以是进程的名字也可以是PID。 <br>-kt process <br>可以干掉整整一棵树。 <br><br>举例： ptree -c hello 然后出来一大串东西，自己看吧！ <br><br>16. pulist.exe <br><br>命令行工具，和上面那个东西有点类似，和Tlist也有一点像（这东西在Support Tools里面）但是 <br>pulist.exe多一点点好处，可以显示出进程和用户之间的关系。比如： <br>C:\&gt;pulist <br><br>Process PID User <br>Idle 0 <br>System 8 <br>smss.exe 156 NT AUTHORITY\SYSTEM <br>csrss.exe 176 NT AUTHORITY\SYSTEM <br>winlogon.exe 172 NT AUTHORITY\SYSTEM <br>services.exe 228 NT AUTHORITY\SYSTEM <br>lsass.exe 240 NT AUTHORITY\SYSTEM <br>svchost.exe 428 NT AUTHORITY\SYSTEM <br>spoolsv.exe 452 NT AUTHORITY\SYSTEM <br>msdtc.exe 480 NT AUTHORITY\SYSTEM <br>tcpsvcs.exe 604 NT AUTHORITY\SYSTEM <br>svchost.exe 620 NT AUTHORITY\SYSTEM <br>llssrv.exe 644 NT AUTHORITY\SYSTEM <br>nspmon.exe 712 USER1-COMPUTER1\NetShowServices <br>nscm.exe 724 USER1-COMPUTER1\NetShowServices <br><br>当你的计算机有多个处理器时，需要判断安全上下关系的时侯这个工具的用处就体现出来了！如果是远程操作的 时候就多加一个pulist \\server就可以了。而且可以顺序显示多个站点pulist \\server \\server&#8230;&#8230;&#8230;， <br>但是这个时侯会不显示User。 <br><br>当你需要专门查找一个已知的进程的时候，可以用这样的方法来简化查找： <br>pulist │ find "string" <br><br>比如，过去老的pwdump2需要知道LSASS的PID，我们可以这样做： <br><br>c:\&gt;pulist │ find "LSASS" <br>LSASS.EXE 252 NT AUTHORITY\SYSTEM <br>然后使用252来运行pwdump2&#8230;&#8230;&#8230; <br><br>17. Reducer.exe （Reduce Trace Data) <br><br>这个东西是一个命令行的事件追踪工具，可以用来处理Tracelog（后面会提到这个工具）产生的记录，形成每个线程，每个进程的工作量记录。 <br><br>实际上呢，Reducer就是一个用来进一步分析工具，比如TraceDump（后面提到）可以允许你对一个追踪日志进行摘要，而Reducer则允许你进行拆分获得更多的细节，诸如： <br><br>事务统计表：响应时间，每秒的事务数，每个事务的磁盘读写，每个事务的网络流量，CPU的使用（包括核心和用户空间）。 <br>映象统计表：事务有关的每个进程，每个进程相关的线程，每个进程的CPU使用（包括kernel和user)，每个进程的磁盘读写，每个进程的网络流量。 <br>磁盘信息：总的磁盘读写，每个进程的磁盘读写。 <br>OK，接下来介绍一下语法。 <br><br>语法非常简单： <br><br>reducer -out 20051017183000.htm -h│-help│-? <br><br>-out 20051017183000.htm <br>输出的文件的名字，默认是Workload.txt <br><br>举例：这里我已经事先使用Tracelog生成了一个logfile.etl，然后， <br>reducer -out my_workload.txt c:\logfile.etl就行了。 <br><br>-------------------------------------------------- <br><br>----------------------------------------------+ <br>│ WINDOWS 2000 Capacity Planning Trace <br><br>│ <br>│ Version : 2128 <br><br>│ <br>│ Type : Default <br><br>│ <br>+------------------------------------------------------------------------------------- <br><br>----------------------------------------------+ <br>│ <br><br>│ <br>│ Build : 2195 <br><br>│ <br>│ Processors: 1 <br><br>│ <br>│ Start Time: 17 Feb 2002 23:14:17.430 <br><br>│______________________________________________________________________│ │ <br>│ End Time : 17 Feb 2002 23:14:38.550 <br><br>│ <br>│ Duration : 21 Sec <br><br>│ <br>│ <br><br>│ <br>│ Trace Name: NT Kernel Logger <br><br>│ <br>│ File Name : C:\LogFile.Etl <br><br>│ <br>│ Start Time: 17 Feb 2002 23:14:17.430 <br><br>│______________________________________________________________________│ │ <br>│ End Time : 17 Feb 2002 23:14:38.550 <br><br>│ <br>│ Duration : 21 Sec <br><br>│ <br>│ <br><br>│ <br>+------------------------------------------------------------------------------------- <br><br>----------------------------------------------+ <br><br><br>+------------------------------------------------------------------------------------- <br><br>----------------------------------------------+ <br>│ Transaction Statistics <br><br>│ <br>+------------------------------------------------------------------------------------- <br><br>----------------------------------------------+ <br>│ Transaction Sort Trans Response Transaction Disk/Trans <br><br>Tcp/Trans │ <br>│ Key Time(ms) Rate/sec Reads <br><br>Writes Sends Recieves │ <br>+------------------------------------------------------------------------------------- <br><br>----------------------------------------------+ <br>+------------------------------------------------------------------------------------- <br><br>----------------------------------------------+ <br>～ <br><br>样式大概会是这样的。 <br><br>18. Regback.exe （Registry Backup) <br><br>一个注册表备份用工具，允许你在系统运行期间对注册表进行备份。我想当你需要测试一个软件时，最好先备份一下注册表。在使用这个程序时，至少需要备份文件和文件夹的权限。Regback.exe在运行的时侯需要调用Replacekey函数。 <br><br>语法： <br><br>regback destination_dir 20051017183000.htm hivetype hivename more│/? <br><br>destination_dir <br>备份文件的位置 <br><br>20051017183000.htm <br>要创立的文件 <br><br>hivetype <br>machine或者是users <br><br>hivename <br>HKLM或者HKLU <br><br>这里提几点注意： <br><br>Regback可以备份整个注册表hive（你可以理解为一个file，比如HKEY_USERS\Default在硬盘上实际上就是%SYSTEMROOT%\SYSTEM32\CONFIG\DEFAULT\DEFAULT.LOG）还包括了ACLs(Access control lists)，所以你也可以用这个东东发现和以前不同的ACLs。 Regback不能自动备份Config文件夹以外的文件，你要手动进行，这是为了避免名字冲突。如果当前注册表并没有打开的hive需要自己用Xcopy.exe或者是Scopy.exe拷贝。另外，没有装入的Hive也要自己弄。如果出错的话，Regback会在第一次的时候就停止工作。它也不能覆盖存在的文件，会报错。还有如果空间不合适的话，备份就不能进行，所以最好先备份到硬盘上，然后再拷贝到磁盘上保存。 <br><br>举两个例子吧！ <br><br>备份全部活动的Hives <br><br>C:\&gt;regback c:\backup <br>saving SECURITY to c:\backup\SECURITY <br>saving SOFTWARE to c:\backup\software <br>saving SYSTEM to c:\backup\system <br>saving .DEFAULT to c:\backup\default <br>saving SAM to c:\backup\SAM <br><br>***Hive = '\REGISTRY\USER'\'S-1-5-21-1177238915-1383384898-1957994488-500' <br>Stored in file '\Device\HarddiskVolume1\Documents and Settings\Administrator'\'N <br>TUSER.DAT' <br>Must be backed up manually <br>regback users S-1-5-21-1177238915-1383384898-1957994488-50 <br>0 <br><br><br>***Hive = '\REGISTRY\USER'\'S-1-5-21-1177238915-1383384898-1957994488-500_Classe <br>s' <br>Stored in file '\Device\HarddiskVolume1\Documents and Settings\Administrator\Loc <br>al Settings\Application Data\Microsoft\Windows'\'UsrClass.dat' <br>Must be backed up manually <br>regback users S-1-5-21-1177238915-1383384898-1957994488-50 <br>0_Classes <br><br>你看，
<div id=qmmrhlsplhjcktw style="DISPLAY: none">s-Ky^l*V7软W(?Y+</div>
连SAM都可以备份，对于破解SAM，也是有非常大的用处的。 <br><br>下面是备份指定的User的Profile <br>C:\&gt;regback c:\backup\administrator.bku users s-1-5-21-1177238915-1383384898-195 <br>7994488-500 <br>saving s-1-5-21-1177238915-1383384898-1957994488-500 to c:\backup\administrator. <br>bku <br><br>这里用的是SID比较特别，只是用起来太麻烦了，输那么多数字，呵呵！ <br><br>最后是做一个网络备份，也是一个批量脚本。 <br>注意使用Schedule服务一起搭配。前面提到过regback不能覆盖文件，一旦有重名的文件将会导致错误的发生 。 <br><br>echo on <br>rem ... Name: doback.bat <br>rem ... Purpose: Network backup for Registry files <br>rem ... Process: Connect to backup share, delete old backup files, copy over new <br><br>backup files <br>rem ... Before using this batch file, create a share containing the following <br><br>directories: backup, config. Set permissions on this share so that appropriate users <br><br>can run this script. <br><br>net use \\myshare\backup <br><br>rem --&gt; delete old backups; regback will not copy over an existing file <br>echo y│del&nbsp;<br><br><span id=ctl00_ContentPlaceHolder1_ArticleContent>
<p>24. Sc.exe （Service Controller Tool） <br><br>干好一年以前就写过这个东西介绍了。大家再看一遍吧！ <br><br>我们知道在MStools SDK，也就是在Resource Kit有一个很少有人知道的命令行软件，SC.exe，这个软件向所有的Windows NT和Windows 2000要求控制他们的API函数。我们可以在命令行里通过对这些函数设定参数的方式来设定他们(API)。SC.exe也可以显示服务的状态，同时也可以从状态结构区域里重新找到存储在里面的数值。它还可以列出远程计算机的服务函数或者是服务状况结构。SC.exe这个开发工具至少可以比服务控制面板程序和网络命令行界面(net.exe，这个东西可以告诉你一个服务是 <br>在运行中，还是停止，还是暂停。）这两个东西提供更多的细节和准确的信息。虽然上述两个东西在正常工作的情况下，对于完整的调试是非常好用的，但是如果有新的服务，或者新的代码被开发出来的时候，这两个工具提供的信息可能造成误导。这也就是我们需要用到SC的原因。 <br><br>下面举列说明，如果在开发阶段，你的服务在挂住在一个start-pending的时候，控制面板和net.exe同样报告服务是在运行的。但它挂在一个stop-pending的时候，net.exe报告它运行，而控制面板着报告它停止，如果你试着 启动它，这是控制面板则会告诉你这个服务正在运行。难道这不是很困惑吗？呵呵！ <br>SC.exe可以让你询问服务的状况和取出存储在状态结构区域内的数值，控制面板和net.exe不提供服务完整的状况 。但是无论如何，SC程序可以告诉你这个服务准确的情形，同样也可以给你看最后的checkpoint数和等待提示。 <br>这个checkpoint，我叫它检查点(我觉得他就像一个程序调试时置的断点)，所以我们也可以把看作为一个调试工具，因为它可以提供一个关于在程序停止时还要沿着初始化继续前进多久准确报告。 <br>SC.exe也可以允许你调用很多的服务控制API函数，可以让你从命令行里改变大量的参数。这位服务开发者们提供了很多的优势。例如，它提供了一个方便的方式来创建或者在注册表和服务控制管理数据库中配置服务信息。开发者们不需要在手动的在注册表里单独的设置键值来配置服务，也不用重起机器来强迫服务控制管理数据库升级 。 <br>作为一个命令很工具，SC.exe可以用来测试你自己的系统，你可以设置一个批处理文件来使用不同的参数调用SC.exe来控制服务。这个很有用，如果你想看看你的服务不断的启动和停止，我没有试过哦！让一个服务一下子 <br>打开，一下子关闭，听上去很不错的。如果你的服务进程里面有多个进程的话，你可以保持一个进程继续运行不让它走开，然后让另一个不断的打开在关闭，还可以寻找一下内存缺乏导致不完全清楚的证据。 <br>下面介绍SC，SC QC，and SC QUERY <br><br>SC使用这样的语法： <br>1. SC [Servername] command Servicename [Optionname= Optionvalue] <br><br>2. SC [command] <br><br>这里使用第一种语法使用SC，使用第二种语法显示帮助。 <br><br>下面介绍各种参数。 <br><br>Servername <br>可选择：可以使用双斜线，如\\myserver，也可以是\\192.168.0.1来操作远程计算机。如果在本地计算机上 <br><br>操作 <br>就不用添加任何参数。 <br><br>Command <br>下面列出SC可以使用的命令。 <br><br>config 改变一个服务的配置。（长久的） <br><br>continue 对一个服务送出一个继续控制的要求。 <br><br>control 对一个服务送出一个控制。 <br><br>create 创建一个服务。（增加到注册表中） <br><br>delete 删除一个服务。（从注册表中删除） <br><br>EnumDepend 列举服务的从属关系。 <br><br>GetDisplayName 获得一个服务的显示名称。 <br><br>GetKeyName 获得一个服务的服务键名。 <br><br>interrogate 对一个服务送出一个询问控制要求。 <br><br>pause 对一个服务送出一个暂停控制要求。 <br><br>qc 询问一个服务的配置。 <br><br>query 询问一个服务的状态，
<div id=tlelurmpwqohl style="DISPLAY: none">{H8=专教kKG国ie@</div>
也可以列举服务的状态类型。 <br><br>start 启动一个服务。 <br><br>stop 对一个服务送出一个停止的要求。 <br><br>Servicename <br>在注册表中为service key制定的名称。注意这个名称是不同于显示名称的（这个名称可以用net start和服务控制面板看到），而SC是使用服务键名来鉴别服务的。 <br><br>Optionname <br>这个optionname和optionvalue参数允许你指定操作命令参数的名称和数值。注意，这一点很重要在操作名称和等号之间是没有空格的。一开始我不知道，结果&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;，比如，start= optionvalue，这个很重要。 <br>optionvalue可以是0，1，或者是更多的操作参数名称和数值对。 <br>如果你想要看每个命令的可以用的optionvalue，你可以使用sc command这样的格式。这会为你提供详细的帮助。 <br><br>Optionvalue <br>为optionname的参数的名称指定它的数值。有效数值范围常常限制于哪一个参数的optionname。如果要列表请用sc command来询问每个命令。 <br><br>Comments <br>很多的命令需要管理员权限，所以我想说，在你操作这些东西的时候最好是管理员。呵呵！ <br><br>当你键入SC而不带任何参数时，SC.exe会显示帮助信息和可用的命令。当你键入SC紧跟着命令名称时，你可以得到一个有关这个命令的详细列表。比如，键入sc create可以得到和create有关的列表。 <br>但是除了一个命令，sc query，这会导出该系统中当前正在运行的所有服务和驱动程序的状态。 <br><br>当你使用start命令时，你可以传递一些参数（arguments）给服务的主函数，但是不是给服务进程的主函数。 <br>SC create <br>这个命令可以在注册表和服务控制管理数据库建立一个入口。 <br><br>语法1 <br>sc [servername] create Servicename [Optionname= Optionvalue] <br><br>这里的servername，servicename，optionname，optionvalue和上面的一样，这里就不多说了。这里我们 <br><br>详细说明一下optionname和optionvalue。 <br><br>Optionname Optionvalue <br>描述type= own, share, interact, kernel, filesys <br>关于建立服务的类型，选项值包括驱动程序使用的类型，默认是share。 <br><br>start= boot, system, auto, demand, disabled <br>关于启动服务的类型，选项值包括驱动程序使用的类型，默认是demand（手动）。 <br><br>error= normal, severe, critical, ignore <br>当服务在导入失败错误的严重性，默认是normal。 <br><br>binPath= (string) <br>服务二进制文件的路径名，这里没有默认值，这个字符串是必须设置的。 <br><br>group= (string) <br>这个服务属于的组，这个组的列表保存在注册表中的ServiceGroupOrder下。默认是nothing。 <br><br>tag= (string) <br>如果这个字符串被设置为yes，sc可以从CreateService call中得到一个tagId。然而，SC并不显示这个标签，所以使用这个没有多少意义。默认是nothing <br><br>depend= (space separated string)有空格的字符串。 <br>在这个服务启动前必须启动的服务的名称或者是组。 <br><br>obj= (string) <br>账号运行使用的名称，也可以说是登陆身份。默认是localsystem <br><br>Displayname= (string) <br>一个为在用户界面程序中鉴别各个服务使用的字符串。 <br><br>password= (string) <br>一个密码，如果一个不同于localsystem的账号使用时需要使用这个。 <br><br>Optionvalue <br>Optionname参数名称的数值列表。参考optionname。当我们输入一个字符串时，如果输入一个空的引用这意味着一个空的字符串将被导入。 <br><br>Comments <br>The SC CREATE command performs the operations of the CreateService API function. <br>这个sc create命令执行CreateService API函数的操作。详细请见CreateService。 <br><br>例1 <br>下面这个例子在一台叫做（\\myserver）的计算机上为一个叫&#8220;NewService&#8221;的服务建立的一个注册表登记。 <br>sc \\myserver create NewService binpath= c:\winnt\system32\NewServ.exe <br><br>按照默认，这个服务会建立一个WIN32_SHARE_PROCESS使用SERVICE_DEMAND_START启动方式。这将不会有任何从属关系，也将会按照localsystem安全上下关系来运行。 <br><br>例2 <br>下面这个例子将在本地计算机上，建立一个服务，它将会是一个自动运行服务，并且运行在他自己的进程上。它从属于TDI组和NetBios服务上。注意，你必须在从属中间增加一个空格的引用。 <br><br>sc create NewService binpath= c:\winnt\system32\NewServ.exe type= own <br>start= auto depend= "+TDI Netbios" <br><br>例3 <br>服务开发者可以通过临时改变二进制路径（影像路径）的方式来将这个服务运行在内核调试器的上下关系中。下面这个例子就可以让我们看到如何改变服务的配置。 <br><br>sc config NewService binpath= "ntsd -d c:\winnt\system32\Newserv.exe" <br>这个例子会引起服务控制管理器调用ntsd.exe使用下例的参数字符串： <br>"-d c:\nt\system32\NewServ.exe" <br><br>当系统装入newserv.exe时ntsd将会转而打断调试器，所以断点可以被设置在服务代码里。 <br><br>SC QC <br>这个SC QC&#8220;询问配置&#8221;命令可以列出一个服务的配置信息和QUERY_SERVICE_CONFIG结构。 <br><br>语法1 <br>sc [Servername] qc Servicename [Buffersize] <br><br>Parameters <br>servername和servicename前面已经介绍过了，这里不再多说。 <br><br>Buffersize，可选择的，列出缓冲区的尺寸。 <br><br>Comments <br><br>SC QC命令显示了QUERY_SERVICE_CONFIG结构的内容。 <br><br>以下是QUERY_SERVICE_CONFIG相应的区域。 <br>TYPE dwServiceType <br>START_TYPE dwStartType <br>ERROR_CONTROL dwErrorControl <br>BINARY_PATH_NAME lpBinaryPathName <br>LOAD_ORDER_GROUP lpLoadOrderGroup <br>TAG dwTagId <br>DISPLAY_NAME lpDisplayName <br>DEPENDENCIES lpDependencies <br>SERVICE_START_NAME lpServiceStartName <br><br>例1 <br><br>下面这个例子询问了在上面例子中建立的&#8220;NewService&#8221;服务的配置： <br><br>sc \\myserver qc NewService <br><br>sc显示下面的信息： <br><br>SERVICE_NAME: NewService <br>TYPE : 20 WIN32_SHARE_PROCESS <br>START_TYPE : 3 DEMAND_START <br>ERROR_CONTROL : 1 NORMAL <br>BINARY_PATH_NAME : c:\winnt\system32\NewServ.exe <br>LOAD_ORDER_GROUP : <br>TAG : 0 <br>DISPLAY_NAME : NewService <br>DEPENDENCIES : <br>SERVICE_START_NAME : LocalSystem <br><br>NewService有能力和其他的服务共享一个进程。但是它不是自动启动的。二进制文件名是NewServ.exe。这个服务不依靠与其它的的服务，而且运行在lcoalsystem的安全上下关系中。这些都是调用QueryServiceStatus基本的返回，如果还需要更多的细节届时，可以看看API函数文件。 <br><br>SC QUERY <br><br>SC QUERY命令可以获得服务的信息。 <br><br>语法： <br>sc [Servername] query { Servicename │ Optionname= Optionvalue... } <br><br>参数： <br><br>servername, servicename, optionname, optionvalue不在解释。只谈一下这个命令提供的数值。 <br><br>Optionname Optionvalue <br>Description <br><br>type= driver, service, all <br>列举服务的类型，默认是service <br><br>state= active, inactive, all <br>列举服务的状态，默认是active <br><br>bufsize= (numeric value) <br>列举缓冲区的尺寸，默认是1024 bytes <br><br>ri= (numeric value) <br>但开始列举时，恢复指针的数字，默认是0 <br><br>Optionvalue <br>同上。 <br><br>Comments <br><br>SC QUERY命令可以显示SERVICE_STATUS结构的内容。 <br><br>下面是SERVICE_STATUS结构相应的信息： <br>TYPE dwServiceType <br>STATE dwCurrentState, dwControlsAccepted <br>WIN32_EXIT_CODE dwWin32ExitCode <br>SERVICE_EXIT_CODE dwServiceSpecificExitCode <br>CHECKPOINT dwCheckPoint <br>WAIT_HINT dwWaitHint <br><br>在启动计算机后，使用SC QUERY命令会告诉你是否，或者不是一个启动服务的尝试。如果这个服务成功启动，WIN32_EXIT_CODE区间会将会包含一个0，当尝试不成功时，当它意识到这个服务不能够启动时，这个区间也会提供一个退出码给服务。 <br><br>例子 <br><br>查询&#8220;NewService"服务状态，键入： <br><br>sc query NewService <br><br>显示一下信息： <br><br>SERVICE_NAME: NewService <br>TYPE : 20 WIN32_SHARE_PROCESS <br>STATE : 1 STOPPED <br>(NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN) <br>WIN32_EXIT_CODE : 1077 (0x435) <br>SERVICE_EXIT_CODE : 0 (0x0) <br>CHECKPOINT : 0x0 <br>WAIT_HINT : 0x0 <br><br>注意，这里存在一个给这个服务的退出码，即使这个服务部不在运行，键入net helpmsg 1077，将会得到对 <br>1077错误信息的说明： 上次启动之后，仍未尝试引导服务。所以，这里我想说一句，希望大家可以活用net helpmsg，这会对你的学习有很大的帮助。 <br><br>下面在对SC query的命令在说明一下： <br><br>列举活动服务和驱动程序状态，使用以下命令： <br>sc query <br><br>显示messenger服务，使用以下命令： <br>sc query messenger <br><br>只列举活动的驱动程序，使用以下命令： <br>sc query type= driver <br><br>列举Win32服务，使用以下命令： <br>sc query type= service <br><br>列举所有的服务和驱动程序，使用以下命令： <br>sc query state= all <br><br>用50 byte的缓冲区来进行列举，使用以下命令： <br>sc query bufsize= 50 <br><br>在恢复列举时使用index=14，使用以下命令： <br>sc query ri=14 <br><br>列举所有的交互式服务，使用以下命令： <br>sc query type= service type= interact <br><br>好了，说到这里。SC命令基本上已经说完了。希望大家好好看看，呵呵！相信会有帮助的！！ <br><br>25. Scanreg.exe <br><br>又是个注册表工具，有没有人烦了？我都快烦了，呵呵！ <br><br>一个注册表检查工具，基本上就是一个"registry GREP"。支持搜索本地或远程的Win一家老小的注册表中的任意东西。 <br><br>scanreg -s string -k -v -d -r key -c -e -n <br><br>-s <br>要搜索的字符串 <br><br>-r <br>开始搜索的root，默认是HKEY_CURRENT_USER <br><br>也可以使用以下的格式： <br>HKEY_LOCAL_MACHINE === lm <br>HKEY_CURRENT_USER === cu <br>HKEY_CLASSES_ROOT === cr <br>HKEY_USERS === us <br><br>-k <br>查询键。 <br><br>-v 注意必须指定-k -v -d中的至少一个。 <br>查询值。 <br><br>-d <br>当然是查询数据。 <br><br>-c （默认是不敏感） <br>大小写敏感。 <br><br>-e （默认是返回所有合适的） <br>只返回却确合适的。 <br><br>-n <br>输出的时候不使用颜色（默认是key红，values绿，data黄）真不知道微软的怎么想的！！看上去怪怪的，还有就是匹配的字符串都高亮标出。 <br><br>最后来两个例子： <br><br>scanreg -s version -k -v -d <br><br>scanreg -s version -kvd &lt;--居然这种独可以？ <br><br>scanreg /s version /r \lm\software /kvde 没有关系，这种都是可以的，呵呵！ <br><br>scanreg version \\hello\HKEY_LOCAL_MACHINE -d 操作远程的东东。 <br><br>26. sclist.exe <br><br>可以列出当前运行或者是停止的服务。看看远程的机器也是功能之一，但是比起SC来说，还是太简单了！ <br><br>sclist -r -s MachineName -? <br><br>-r <br>只显示正在运行的服务。 <br><br>-s <br>只显示已经停止的服务。 <br><br>Machinename <br>本地可以不指出。 <br><br>这个简单大家自己做做，这里不举例了！！ ，不要讲我偷懒哦！ <br><br><br>27. Setx.exe <br><br>这个命令行工具提供了一种批量修改环境变量的方法，同时不需要使用任何编程方法或者是脚本。此外，除了可以获得变量和值之外还可以跟注册表的值挂上关系。在2000中除了setx.exe之外，其他没有任何一种命令行工具可以直接设置系统变量值。只有通过控制面板和注册表编辑器才能够设置。如果有人说可以用set命令的话， 实际上这个CMD的内部命令只能够设置当前控制台窗口的用户环境变量。 setx允许你通过Command Line Mode，Registry Mode，File Mode，这三种模式来设置环境变量。 <br><br>a. Command-Line <br><br>setx variable value -m <br><br>variable <br>要设置的环境变量的名字。 <br><br>value <br>要设置的值。 <br><br>-m <br>设置计算机环境，默认设置是用户环境。 <br><br>b. Registry Mode <br><br>setx variable -k hive\key\&#8230;&#8230;\value -m <br><br>variable <br>要设置的环境变量的名字。 <br><br>-k <br>指定变量设置会基于注册表中的信息。 <br><br>hive\key\&#8230;&#8230;\value <br>注册表路径，如： <br>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\StandardName <br><br>-m <br>同命令行模式。 <br><br>c. File Mode <br><br>setx variable -f 20051017183000.htm -a x,y │ -r x,y "string" -d d -x -m <br><br>-f 20051017183000.htm <br>指定使用的文件名。 <br><br>-a x,y <br>指定要搜索的绝对坐标或者是偏移量。 <br><br>-r x,y "string" <br>指定从"string"的相对坐标或者是偏移。 <br><br>-d d <br>指定附加的分隔符，<span id=pnojfgrnmirovag style="DISPLAY: none">1教l\(9网(yZt网网zV</span>后一个d表示，可以是",", "\"等等。系统有四个内建的分隔符是：space, tab, <br><br>carriage return, linefeed。附加的可以是任意的ASCII字符。 <br><br>-x <br>显示文件坐标，这个时候-a, -r, -d会变忽略。 <br><br>-m <br>在同上。 <br><br>setx将变量写入到在注册表的主环境中去。用setx设置的变量将会在下一次启动的时候生效，
<p id=dpfppeilhigut style="DISPLAY: none">6W软]l7|-网^业供)</p>
这是2000的局限。当访问REG_MULTI_SZ时，只能访问到第一个项目。 <br>目前setx只可以支持HKCU和HKLM两个hives。用Setx增加的值不可以用setx去掉，可以在控制面板里面改，也可以在注册表里面改，这种时候也可以用set把它置空。 <br><br>但是还是来几个例子吧！ <br><br>a.Command Line <br><br>Setx MACHINE COMPAQ <br>在用户环境中设置MICHINE为COMPAQ。 <br><br>setx MYPATH %PATH% <br>设置MYPATH的值为当前PATH变量的值。 <br><br>setx MYPATH ~PATH~ <br>设置MYPATH总是和PATH环境的值保持一致。 <br><br>b. Registry <br><br>Setx TZONE -k <br><br>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\StandardName <br>设置TZONE的值为上面的键。比如："Central Standard Time" <br><br>Setx BUILD -k "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows <br><br>NT\CurrentVersion\CurrentBuildNumber" <br>设置BUILD的值为当前的Windows NT版本号，如：1314。 <br><br>c. File <br>在进行这部分之前先运行ipconfig &gt; ipconfig.out，弄一个ipconfig的文本出来。然后就可以进行操作了 <br><br><br>Setx var -f ipconfig.out -x <br>这个命令会显示这个文件的内容的坐标。如： <br><br>C:\&gt;SETX VAR -f ipconfig.out -x <br><br><br>(1,0 Windows) (1,1 2000) (1,2 IP) (1,3 Configuration) <br><br>(3,0 Ethernet) (3,1 adapter) (3,2 Local) (3,3 Area) (3,4 Connection <br><br>(5,0 Connection-specific) (5,1 <font color=#0000ff>DNS</font>) (5,2 Suffix) (5,3 .) (5,4 <br>(6,0 IP) (6,1 Address.) (6,2 .) (6,3 .) (6,4 .) (6,5 .) (6,6 .) (6,7 .) (6,8 .) <br>(6,9 .) (6,10 .) (6,11 .) (6,12 .) (6,13 (6,14 192.168.1.1) <br>(7,0 Subnet) (7,1 Mask) (7,2 .) (7,3 .) (7,4 .) (7,5 .) (7,6 .) (7,7 .) (7,8 .) <br>(7,9 .) (7,10 .) (7,11 .) (7,12 .) (7,13 (7,14 255.255.255.0) <br>(8,0 Default) (8,1 Gateway) (8,2 .) (8,3 .) (8,4 .) (8,5 .) (8,6 .) (8,7 .) (8,8 <br>.) (8,9 .) (8,10 .) (8,11 <br><br>setx ipaddr -f ipconfig.out -a 5,11 <br><br>这个命令会寻找绝对偏移为(5，<font id=datlfraleni style="DISPLAY: none">zN业供专!8K|U!</font>11)的内容，然后设置ipaddr为这个值。如： <br><br>C:\&gt;setx ipaddr -f ipconfig.out -a 6,14 <br>Extracted value is: 192.168.1.1 <br><br>Setx ipgateway -f ipconfig.out -r 0,11 "Gateway" <br>查找Gateway这个字符串偏移0，11的东东，然后写到ipgateway里面去。 <br><br>C:\&gt;Setx ipgateway -f ipconfig.out -r 0,11 "Gateway" <br>Extracted value is: 192.168.1.244 <br><br>以上所有的修改都会在重起以后看到，可以用set或者是控制面板中的System properties看。 <br><br>
<p>28. showpriv.exe （show Privilege） <br><br>一个用来显示用户或者是组分配的特权的命令行工具，如果要看domain的相关的东西的话，要在DC上使用。使用起来很简单，showpriv privilege就行了，如： <br><br>C:\&gt;showpriv sesecurityprivilege <br>1 account(s) with the sesecurityprivilege user right: <br>BUILTIN\Administrators <br>All accounts enumerated <br><br>这里主要讲一下这个2000的一些privilege。 <br><br>Privilege，<font id=pdwunrdvcfcvwu style="DISPLAY: none">管DmW网S*I,.u#fM</font>为本地管理员提供了一种手段，可以控制允许什么人具有什么权限或者能执行什么样的系统操作， <br>如允许交互式登陆等等。这里我们说的特权是指特殊操作所需的权限，如备份呀什么的！一旦授予了某种特权，这些特权就会包括在用户的安全访问令牌中。这是一些基本的概念，可以看以下，比较容易明白。 <br>系统为了管理的方便总是为每个本地组分配了相应的特权，而且从来不改变这个特权，这些东东在NT系统上可以分为内置能力，标准用户权力，高级用户权力这么几种，但是在2000中标准权利和高级权力已经被用户特权所取代，只有在为委派而信任计算机和用户帐户（SeEnableDelegationPrivilege）和把计算机从dock中移出（SeUndockPrivilege）这两种情况下可以把NT的权利映射到2000中的特权。注意一下2000的一些问题。并非所有能力都有匹配的权利，因此，不可能用权力完全匹配组的内置能力。而由于特定组能力的预定义分配和不能把所有能力复制为权力，就难以区分任务，并且只能强制使用最低特权的概念。 <br>那么在域一级下就缺少一个安全结构，导致了难以授予管理的功能。2000在AD引入后，就允许区分任务，也可授予domain和OU相应的管理层次。 <br><br>下面来谈一下具体的一些用户特权，应当有26个，也有说28个的。 <br><br>SeTcbPrivilege <br>成为OS的一部分允许进程可以像用户一样被鉴别，因此可以像用户一样访问相应的资源。只有底层的鉴别服务需要这样的特权，所以无论是工作站，独立服务器，还是DC都没有把这个设为某人权利。 <br>SeMachineAccountPrivilege <br>添加工作站到域 为了这个特权可以启用，必须保证这个用户在域控制器本地安全策略中的才行。 <br><br>SeBackupPrivilege <br>备份文件和目录。 <br>允许用户绕过文件和目录的权限来做备份。只有当应用程序尝试访问NTFS备份API时才检查这个特权。默认情况下，这个特权分配给Administrators和Backup Operators。 <br><br>SeChangeNotifyPrivilege <br>回避遍历检查。 <br>允许用户来回移动目录，但是不能列出文件夹的内容。默认情况下，这种特权被赋予Administrators, <br>Backup Operators, Power Users, Users ,and Everyone，换句话说就是所有人都有这种权利。 <br><br>SeSystemTimePrivilege <br>改变系统时间。 <br>默认情况下Administrators和Power Users有这种权利。 <br><br>SeCreatePagefilePrivilege <br>创建分页文件。 <br>允许用户创建和改变一个分页文件的大小。默认情况下，只有Administrators有这个特权。 <br><br>SeCreateTokenPrivilege <br>创建令牌对象。 <br>允许进程调用NtCreateToken()或者是其他的Token-Creating APIs创建一个访问令牌。 <br><br>SeCreatePermanentPrivilege <br>创建永久共享对象。 <br>允许进程在2000项目管理器中创建一个目录对象。 <br><br>SeDebugPrivilege <br>调试程序。 <br>允许用户连接一个Debugger来调试任何进程。默认情况下Administrators有该特权。 <br><br>SeEnableDelegationPrivilege <br>为委派而信任计算机和用户帐户。 <br>允许用户为了委派而改变信任，只有当用户或者是计算机对该对象的帐户控制标志有写权限的时候可以。 <br><br>SeRemoteShutdownPrivilege <br>远程关闭系统。 <br>Administrators在默认情况下有此特权。 <br><br>SeAuditPrivilege <br>产生安全审核。 <br>允许一个应用程序在安全日志中，创建，产生，增加一条记录。 <br><br>SeIncreaseQuotaPrivilege <br>增加限额。 <br>允许一个有写属性的进程利用其他进程从而取得更多的处理器限额，这种特权有利于系统调试，但是也有导致DOS的可能。 <br><br>SeIncreaseBaseProrityPrivilege <br>增加调度优先级。允许一个有写属性的进程利用其它进程来获得更多的执行优先权。有这种特权的用户可以在Task管理器中改变一 个进程的调度优先权。默认情况Administrators有该特权。 <br><br>SeLoadDriverPrivilege <br>安装和卸载设备驱动程序。 <br>允许用户安装和卸载即插即用设备的驱动程序，不是即插即用的不受这个特权影响，但是只能被 <br><br>Administrators所安装。因为驱动程序是作为被信任的程序来运行的，这需要很高的特权。而这种特权可能会被用于安装恶意程序，和破坏性的访问。默认情况下Administrators有该特权。 <br><br>SeSecurityPrivilege <br>管理审计和安全日志。 <br>允许用户指定对象访问的审计。有这种特权的用户也可以清空安全日志。默认情况下Administrators有该特权。 <br><br>SeSystemEnvironmentPrivilege <br>修改firmware环境变量。 <br>允许用户使用进程通过一个API来设置系统环境变量，另外，也可以让用户使用System Properties来做到以上这一步。默认情况下Administrators有该特权。 <br><br>SeProfileSingleProcessPrivilege <br>Profile单一进程。 <br>允许用户使用性能监视器来监视nonsystem进程。默认情况下Administrators有此特权。 <br><br><br>SeSystemProfilePrivilege <br>Profile系统性能。 <br>允许用户使用性能监视器来监视system进程。默认情况下Administrators有此特权。 <br><br>SeUndockPrivilege <br>将计算机中dock中删除。 <br>允许用户使用Eject PC从坞中将计算机移出，默认情况下Administrators, Power Users, Users均有此特 <br><br>权。 <br><br>SeAssignPrimaryTokenPrivilege <br>替换一个进程级令牌。 <br>允许一个父进程替换相关的子进程的访问令牌。 <br><br>SeRestorePrivilege <br>恢复文件和目录。 <br>允许用户绕过文件及目录权限来恢复备份文件。默认情况下Administrators和Backup Operators有此特权。 <br><br>SeShutdownPrivilege <br>关闭系统。 <br>允许用户关闭本地计算机。默认情况下Administrators, Backup Operators, Power Users, Users都有 <br><br>该特权，但是在2000 Server中Users没有此特权。 <br><br>SeSynchAgentPrivilege <br>同步目录服务数据。 <br>允许一个进程提供目录同步服务，这个特权只有在DC上。默认情况下域的Administrators和LocalSystem帐户 <br><br>有此特权。 <br><br>SeTakeOwnershipPrivilege <br>取得文件所有者身份。 <br>允许用户取得在系统中任何可得到的对象的所有者身份，包括：AD对象，文件，文件夹，打印机，注册表键，进 <br><br>程和线程。默认情况下Administrator有此特权。 <br><br>以上就是2000的用户特权了，是不是很多呢？呵呵！ <br><br>29. Sleep.exe （Batch File Wait） <br><br>Sleep可以让计算机等待一段指定的时间。这个东东对于使用Batch文件会非常有用，在某些情况下也可能会让AT命令的使用更加方便。 <br><br>Sleep time <br><br>time <br>要暂停的时间，秒为单位。 <br><br>sleep 20 <br>在运行下一个程序之前等待20s。 <br><br>假设我们搞这么一个登陆脚本到计算机上，我想是个不错的主意。 <br><br>@echo off <br><br>echo 2／23／2002 <br>echo. <br>echo 不要忘了明天女朋友生日哦！！呵呵！ <br><br>sleep 60 <br><br>30. Soon.exe （Near-Future Command Scheduler) <br><br>soon这个命令可以让一个程序在很短的时间里面启动，比如几秒钟之内。基本上soon就是一个AT的装配命令，可以简单的装配一组合适AT命令来远程或者是本地启动一个程序。当然soon使用起来要比AT简单的多，自然功能也要少一些了。当然soon可以让一个命令在小于一天的时间内重复启动，这一点还是很有用的。下面介绍一下 <br><br>如何使用。 <br><br>soon有两种命令，一是普通的操作命令，还有就是配置命令。 <br><br>1. Scheduling Command <br>soon \\computername delay /interactive "command" <br><br>\\computername <br>指定你要的计算机，远程使用时要net use。 <br><br>delay <br>指定从现在开始到启动程序的间隔，以秒为单位，默认情况下是本地5s,远程15s。 <br><br>/interactive <br>这个和AT命令里面的interactive是一样的。基本上可以看作是如果你打开一个cmd窗口，它会在桌面上跳出来。默认是off的。只有当Schedule服务以LocalSystem身份启动时才可以Interactive。 <br><br>command <br>你想要执行的命令，这里用双引号来维持命令解释时候的空格。 <br><br>2. Configuration Command <br><br>soon /d /l:n /r:n /i: on│off <br><br>/d <br>用这个开关来修改默认配置 <br><br>/l:n <br>指定LocalDelay的值。 <br><br>/r:n <br>指定RemoteDelay的值。 注意，这些值都是正整数，而且以秒为单位。 <br><br>/in│off <br>指定默认情况下是interactive还是uninteractive。 <br><br>如果你想每5分钟启动一次一个程序可以写一个这样的脚本。 <br><br>every5.cmd <br>soon 300 every5.cmd <br>xxxx.exe <br><br>对于远程启动时，使用AT命令不能成功的原因多数是因为AT命令需要指定绝对时间，如果不能搞得太清楚的话，我建议你们使用soon命令，在大部分情况下大家需要AT的功能，soon都可以完成，而且很快。基本上srv.exe 这样的后门都可以用soon来做。 另外不得不提一点，不知道是我的机器的关系还是这个程序本身的bug，很多情况下soon产生的schedule居然会是tomorrow，这个有点让人搞不懂。大家可以多试试。 <br><br>31. Srvany.exe （Applications as Services Utility） <br><br>Srvany一个可以让Windows应用程序像一个服务那样运行。也就是说在logoff的时候不关闭，也不用在logon <br>的时候重新启动。也就是就算是没有人登陆这个程序也可以运行，当然计算机得是开着的，呵呵！此外，如果这个应用程序不忽略WM_ENDSESSION或者CTRL_LOGOFF_EVENT时，程序也会因为logoff而退出。srvany是一个为32-bit应用程序设计的，但是用用16-bit也应该没有多大问题。如果你安装过srvany服务的话，在升级或安装Windows 2000, Windows NT Server, Windows NT Workstation, or applications 时要先disabled。实际上srvany本身就是一个服务，它先把自己启动起来，然后又在启动那些配置过的应用程序。就我个人开来这种方法很费力，比起instsrv和srvinstw来说都比较难以使用，最关键的是还要手工添加注册表。下面也就说一下怎么样让一个应用程序像一个服务那样运行。首先我们要安装Srvany，可以使用instsrv Myservice c:\path\srvany.exe或者srvinstw照提示做就可以了。这个是必要的，我们需要Srvany来启动程序。当然为了让程序像服务一样运行，我们需要编辑注册表信息，而且还要选择启动参数和工作目录。这里再次提醒手工操作注册标有危险性，注意备份。 <br><br>我们只要在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\下 <br>添加一个Parameters子键，这里的MyService是刚刚指定的Srvany的服务名字。 <br>然后再这个subkey底下建立一个应用程序入口，使用REG_SZ类型。 <br>接着在指定程序的全路径，需要包括扩展名。比如Application: REG_SZ: C:\Tools\srv.exe <br><br>为了指定相应的启动参数我们还得继续编辑注册表。 <br>这个时候要在刚刚的Parameters底下接着创建一个AppParameters条目，<font id=fbertsmhha style="DISPLAY: none">+GtwCb\))X</font>也是REG_SZ类型。 <br>比如：AppParameters: REG_SZ: C:\tmp\example，当然因为srvany已经被安装为一个服务了，你也可以 <br>在Services面板里指定。C:\Tools\srv.exe C:\\temp\example。注意，这里使用\\来表示一个\。 <br>再来就是指定环境变量了。 <br>添加一个AppEnvironment，REG_MULTI_SZ类型。这个东西就是Services面板里面的Dependencies这一项。 可以根据需要指定，没有就不需要添加。 还要指定Working Directory。 <br>也是在Parameters里面建立一个AppDirectory使用REG_SZ。比如：AppDirectory: REG_SZ: C:\Tmp <br>当然也可以在Services里面 /D c:\\tmp D:\\Tools\\Vi.exe c:\\tmp\\example。 <br><br>一个srvany可以启动一个应用程序，如果你要用srvany而且是多个程序的话，只要采用不同的servicename启 动一个srvany就可以了。如果要删除可以使用instsrv myservice remove，也可以用sc。 <br>大家可以通过调整以下这几个注册表项来为提供相应的访问。 <br>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ <br>LanmanServer\Parameters\NullSessionShares <br><br>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ <br>LanmanServer\Parameters\NullSessionPipes <br><br>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ <br>LanmanServer\Parameters\RestrictNullSessAccess <br><br>32. Srinstw.exe (Service Installation Wizard) <br>这个安装服务的工具前面就已经提到过了，<span id=nfsqeauhal style="DISPLAY: none">+网育iRyw98K</span>而且又是GUI工具，使用起来都照着提示做就可以了，这里就不再多说什么，只是注意卸载服务的时候不要把系统重要的服务赶掉就好了。 <br><br>33. Svcacls.exe （service ACL Editor） <br><br>很可惜在这个版本的Reskit里面缺少了这个程序，非常遗憾不能对它进行测试。 <br><br>Svcacls是一个可以用来设置服务对象的ACL的命令行工具，基本上就是为了方便administrator进行委派控制而设立的。使用这个工具我们需要administrator特权，当然这个东西也是可以进行委派的。这里就提醒一点，不要删除任何服务的adminstrators和system许可，不然的话，你可能就要从装系统来恢复控制了。 <br><br>svcacls \\targetcomputer\Service Option <br><br>\\targetcomputer\Service <br>这个不用说了。 <br><br>Option有以下几种 <br><br>G(grant): trustee: Permissions 增加许可。 <br>S(Set): trustee: Permissions 重置许可。 <br>R(Revoke): trustee: 删除被赋予的explicit permissions。 <br>D(deny): trustee: 拒绝访问。注意，<span id=ogjrvlkccnkilvpw style="DISPLAY: none">v垠ui6TONl网v3Kp8&amp;</span>使用这个命令的时候要很小心，一旦你用了D:everyone，连 <br><br>administrators都没有权限来访问这个服务了。 <br><br>你可以在一行里面使用这些命令。比如： r:username g:uername:riu。 <br><br>trustee <br>你要指定的用户。 <br><br>permissions <br>相应的权限。 <br><br>有Specific许可和generic许可两种。 <br><br>Specific permissions: <br><br>Q: Query Service Configuration (SERVICE_QUERY_CONFIG) <br>S: Query Service Status (SERVICE_QUERY_STATUS) <br>E: Enumerate Dependent Services (SERVICE_ENUMERATE_DEPENDENTS) <br>C: Change Service Configuration (SERVICE_CHANGE_CONFIG) <br>T: Start Service (SERVICE_START) <br>O: Stop Service (SERVICE_STOP) <br>P: Pause/Continue Service (SERVICE_PAUSE_CONTINUE) <br>I: Interrogate Service with ControlService() (SERVICE_INTERROGATE) <br>U: Allow User-Defined Control Commands (SERVICE_USER_DEFINED_CONTROL) <br><br>Generic permissions: <br><br>F: Full Control (SERVICE_ALL_ACCESS = QSECTOPIU) <br>R: Generic Read (GENERIC_READ = QSE) <br>W: Generic Write (GENERIC_WRITE = C) <br>X: Generic Execute (GENERIC_EXECUTE = TOPIU) <br><br>这个工具为我们提供了一种安全性的选择，<font id=udcwkeejthposr style="DISPLAY: none">b,XI*CWW的MhQyX</font>禁止对某些服务的访问，可以避免一些攻击的发生。</p>
<br><span id=ctl00_ContentPlaceHolder1_ArticleContent>&nbsp;
<p>34. Svcmon.exe (service Monitoring Tool) <br><br>这个工具可以用来监视本地或者是远程计算机服务的状态改变，当它发现一个服务开始或者是停止的时候，这个工具将会通过发e-mail或者是Exchange Server来通知你知道。 <br>这个工具由两部分组成，Svcmon.exe这个需要你手工拷贝到%SystemRoot%\System32底下，另一个Smconfig <br>是一个安装向导。由于是图形界面，所以我就不再多说什么东西。这里提醒一下注意，在Exchange <br><br>Recipients那里添如你要提醒的用户的Email。其他的按照指示做就可以了。 <br><br>35. Timethis.exe (Time This) <br><br>我很喜欢这个工具，这个工具可以用来报告一个程序的运行时间。报告的时间可以详细到0.001s。连net sue都可以拿来测试。 当然使用起来也很简单。 <br><br>timethis commandname <br><br>当你在命令中有&lt;, &gt;, &gt;&gt;，｜这样的符号的时候，请使用双引号，比如：timethis "dir /a &gt; a.txt" <br><br>使用以后基本上会出来这么一个东西。 <br><br>C:\&gt;timethis dir <br><br>TimeThis : Command Line : dir <br>TimeThis : Start Time : Sun Mar 03 17:45:27 2002 <br><br>Volume in drive C is WIN2000 <br>Volume Serial Number is 4CE5-8543 <br><br>Directory of C:\ <br><br>2002-02-23 22:58 <br>Documents and Settings <br>2002-02-23 22:49 <br>Inetpub <br>2002-03-03 11:37 <br>Program Files <br>2002-03-03 14:15 <br>WINNT <br>0 File(s) 0 bytes <br>4 Dir(s) 9,512,271,872 bytes free <br><br>TimeThis : Command Line : dir <br>TimeThis : Start Time : Sun Mar 03 17:45:27 2002 <br>TimeThis : End Time : Sun Mar 03 17:45:27 2002 <br>TimeThis : Elapsed Time : 00:00:00.050 <br><br>36. Timezone.exe (Daylight Saving Time Update Utility) <br><br>微软真是奇怪，居然在ResKit里面加入了这样的东西，一个调整夏令时的工具。我们现在又不用夏令时，没有多大用处。随便说说！ <br><br>timezone /g /s startdate enddate /？ <br><br>/g <br>当前的情况。 <br><br>/s startdate enddate <br>进行修改，格式是HourayofWeekay:Month <br><br>Hour: 00-23 <br>DayofWeek: 0=Sunday 1=monday&#8230;&#8230;&#8230; <br>Day指定发生的时间，如果上面是sunday，这里是1的话，就是该月的第一个星期天。 <br>Month: 1 = January 到12 = December。 <br><br>37. Tlocmgr.exe (Telephony Location Manager) <br><br>一个用来管理TAPI的小程序，允许你方便的改变你的TAPI Location。一旦运行以后会在右下角有一个tray，这个实在没有什么好说的。 <br><br>38. Tracedmp.exe (Trace Dump) <br><br>这个工具也是用来处理Tracelog产生的日志的，和前面的Reducer.exe有相象之处。Tracelog产生的是不容易阅读的，我们可以使用Tracedmp把它转换比较容易读的格式，比如Summary.txt这种内容少一点, 也可以是CSV可以比较详细。还有tracedmp可以直接从Realtime buffer中直接读出数据来处理。tracedmp解释tracelog产生的日志是通过一个叫mofdata.guid的文件，这文件里面包含了系统的目录服务和系统追踪信息。 <br><br>如果要处理 其他的数据，必须把相应的信息加入到mofdata.guid中去。 <br><br>tracedmp option -h│-? <br><br>-o 20051017183000.htm <br>输出CSV和summary文件，默认情况下是dumpfile.csv和summary.txt。这里的dumpfile.csv包括每一个 <br>event的详细的信息。具体产生的日志的内容代表的信息我在这里就不详细说了，
<p id=jqbobkneocqbgto>1#管无M:jP提2q's00</p>
大家可以参看相应的资料。 <br><br>-guid <br>MOF定义文件，默认的GUID是mofdata.guid，你也可以进行指定。 <br><br>-rt <br>产生一个real-time trace文件。如果要指定这个选项，tracelog必须是在工作的。 <br><br>-summary <br>只提供summary.txt文件。一般像这样用就可以了，<font id=rbsflfqbiojpni>软0g供G4W~$0CTY9</font>Tracedmp c:\logfile.etl。你当然也可以tracedmp -rt ds，来显示realtime记录。 <br><br>39. Traceenable.exe (Trace Enable) <br><br>这是一个用来enable/disable RAS/RADIUS记录的GUI工具。这个工具允许我们修改 <br><br>HKLM\SOFTWARE\Microsoft\Tracing key下的 <br>EnableConsoleTracing <br>EnableFileTracing <br>MaxFileSize <br>三个subkeys。如果你熟悉注册表的话，也可以直接修改。图形界面的工具就不多说了。提一下面板中的几个选项。 <br><br>Global <br>enable console tracing <br>允许你实时看目录。 <br><br>enable pool tagging <br>打开system pool标记。 <br><br>Per Component <br>enable console tracing <br>在控制台窗口中显示日志跟踪信息。 <br><br>enable file tracing <br>把信息保存到一个日志文件中。一般在%windir%\tracing。 <br><br>max file size <br>文件的最大尺寸。 <br><br>如果你是在一台才安装的计算机中启用这个东东的话，有些键值会不在注册表中，那就是说在Trace Enable中也看不到，你需要先运行RasPhone。 <br><br>40. Tracelog.exe (Trace Log) <br><br>说了半天终于说到这个tracelog.exe了。这个命令行工具可以开始，停止，启用跟踪记录，这些记录可以用Tracedmp或者是Reducer来看。tracelog在运行时将建立一个buffer，然后如果有数据进入buffer它可以把这些数据转换为文件保存，也可以进行实时的跟踪，这个时候我们可以用如tracedmp这样的应用程序读出buffer中的数据。 <br><br>tracelog managementoption bufferoption logfileoption Systemleveltracingoption <br><br>Provider-specificOption -h│-? <br><br>managementOption: Starting, stopping, updating and querying <br><br>-guid file <br>和tracedmp中的是一样的，都是表示provider的信息。如果开始System tracing可以不用提供Guid，如果是directory service events我们可以指定control.guid。 <br><br>-start logger_name <br>开始一个trace会话。你要提供一个日志名字，如果是一个system trace可以不需要指定，默认的名字为&#8220;NT <br>Kernel logger&#8221;。 <br><br>-stop logger_name <br>终止trace会话。如果是system trace可以不用指定logger_name。 <br><br>-update option logger_name <br>升级当前的trace会话。这个东西在你想改变文件的名字，buffer的参数，realtime模式等时候就会被用到。 <br>以下这些option可以在kernel logger中用到。 <br><br>-rt <br>模式开关，调整realtime mode。 <br><br>-f logfile_name <br>指定新的log文件的名字。 <br><br>-ft n <br>改变buffer的刷新计数器。 <br><br>-max n <br>改变buffer的大小。 <br><br>"-nodisk" "-noprocess" "-nothread" "-nonet" "-fio" "-pf" "-hf" "-img" "-cm" <br>NT kernel logger的一些标志。 <br><br>上面这些调整可以一次进行，如：tracelog -update -rt -max 40。 <br><br>-x <br>停止所有活动的会话。 <br><br>-l <br>查询在工作的traces。 <br><br>-q <br>只查询system trace。 <br><br>BufferOption <br><br>-b n <br>设置buffer的大小为n kb。小的buffer会导致经常刷新buffer，
<p id=vomcswvptbpg>N%网Q_:j专软国XE</p>
基本上使用默认就好。 <br><br>-min n <br>设置最小buffer,默认是2。 <br><br>-max n <br>设置最大buffer，默认是25。 <br><br>-ft n_seconds <br>设置刷新时间。 <br><br>-age n_minutes <br>修改老化时间。就是分配的buffer没有使用，
<p id=cfjokqnbja>?件_F件}Rw_c</p>
会在多长时间内被释放。 <br><br>LogfileOption <br><br>-rt b <br>启用real time mode。 <br><br>-f name <br>日志的名字。默认是c:\logfile.etl，如果要使用不同的名字用-o 20051017183000.htm。 <br><br>-seq n_mbyte <br>一直使用到n_mbyte。 <br><br>-cir n_mbyte <br>循环使用n_mbyte。 <br><br><br>Systemleveltracingoption <br>为kernel tracing提供更多的选项。 <br>默认情况下kernel tracing包括 <br>Process start/end <br>Disk I/O <br>Network TCP/IP, UDP/IP <br>Thread start/end <br><br>只有在使用一些开关后，<font id=koitjpocfjnnpicmi>I2R$软+(网u.I}供@=`R</font>才会产生下面的内容。 <br>Image Load <br>Registry calls <br>File I/O <br>Page Fault <br>但是trace这些东西会产生很大的负担。 <br><br>-fio <br>启用file I/O tracing。 <br><br>-pf <br>启用page faults tracing。 <br><br>-hf <br>启用hard faults tracing。 <br><br>-img <br>启用image load tracing。 <br><br>-um <br>启用Process Private tracing。这种情况下buffer建立在Private Process space中，默认是在kernel <br><br>space中。 <br><br>-nf <br>每n mb更新文件。 <br><br>ProviderSpecificOption: Provider Level Options <br><br>-level n <br><br>-flags <br><br>这些都和相应的provider有关。 <br><br>下面看个例子， <br><br>打开trace。 <br>c:\&gt;tracelog start <br>Logger Started... <br>Operation Status: 0L <br>The operation completed successfully. <br><br>Logger Name: NT Kernel Logger <br>Logger Id: ffff <br>Logger Thread Id: 1360 <br>Buffer Size: 8 Kb <br>Maximum Buffers: 25 <br>Minimum Buffers: 2 <br>Number of Buffers: 2 <br>Free Buffers: 1 <br>Buffers Written: 3 <br>Events Lost: 0 <br>Log Buffers Lost: 0 <br>Real Time Buffers Lost: 0 <br>Log File Mode: Sequential <br>Enabled tracing: Process Thread Disk TcpIp <br>Log Filename: C:\LogFile.Etl <br><br>停止trace <br>C:\&gt;tracelog </span></span></span>
<img src ="http://www.blogjava.net/zhangheng/aggbug/138405.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangheng/" target="_blank">siwei</a> 2007-08-21 16:54 <a href="http://www.blogjava.net/zhangheng/archive/2007/08/21/138405.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>验证码无法显示</title><link>http://www.blogjava.net/zhangheng/archive/2007/08/21/138402.html</link><dc:creator>siwei</dc:creator><author>siwei</author><pubDate>Tue, 21 Aug 2007 08:48:00 GMT</pubDate><guid>http://www.blogjava.net/zhangheng/archive/2007/08/21/138402.html</guid><description><![CDATA[<p>方法一：<br>验证码无法显示的原因是XBM被屏蔽，只需要修复注册表相关项即可：<br><br>打开记事本，把这一段粘贴进去：<br>REGEDIT4<br><br>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet&nbsp;Explorer\Security]<br>"BlockXBM"=dword:00000000<br><br>另存为&nbsp;&nbsp;a.reg即可，运行后，重新打开浏览器。</p>
<br>方法二：<br>今天上网,居然就发现图形验证码无法显示了.郁闷了老半天,找了这个办法<br>1、运行注册表编辑器<br>2、依次点开HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Internet&amp;nbsp;Explorer\\Security；<br>3、在屏幕右边空白处点击鼠标右键，选择新建一个名为;&#8220;BlockXBM&#8221;为的;DWORD&amp;nbsp;键，其值为默认的0<br>4、退出注册表编辑器。
<img src ="http://www.blogjava.net/zhangheng/aggbug/138402.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangheng/" target="_blank">siwei</a> 2007-08-21 16:48 <a href="http://www.blogjava.net/zhangheng/archive/2007/08/21/138402.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>