批处理 搜索目录并且保存为变量

通过搜索特定的文件名找到Office的安装路径,并且保存为变量,对路径再进行字符截取操作,得到想要的路径地址,这种方式适合用来制作自动激活等处理

@echo off
REM 声明采用 936 简体中文编码GBK
chcp 936>nul
title=查看Office安装路径

rem 设置搜索文件为:OSPP.VBS
set "FileName=OSPP.VBS"

echo. 正在搜索,请稍候...
echo.
echo.
rem 搜索的盘符为三个盘:in (C D E)
for %%a in (C D E) do (
  if exist %%a:\ (
    for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
      if /i "%%~nxb" equ "%FileName%" (
           echo 文件完整路径为 %%b
        set FilePath=%%b
      )
    )
  )
)

echo.
echo.
rem :~0,-8 表示截取第一个到倒数第8个字符,就是去掉路径最后面的 OSPP.VBS
echo 相对路径为:%FilePath:~0,-8%

rem :~0,-8 表示截取第一个到倒数第9个字符,就是去掉路径最后面的 \OSPP.VBS
SET OfficePath=%FilePath:~0,-9%
echo Office安装路径为:%OfficePath%

echo.
echo.
pause

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PrintDefineFont() 功能定义打印作业使用的字体,对每个打印作业PowerBuilder支持八种字体。 语法PrintDefineFont(printjobnumber,fontnumber,facename,height,weight,fontpitch,fontfamily, italic,underline) 参数printjobnumber:用PrintOpen()函数打开的打印作业号fontnumber:指定赋给当前定义字体的编号,有效值在1到8之间 facename:string类型,指定字体名称,该字体应该是你的打印机支持的字体,比如“宋体”height:Integer类型,使用正值指定字体的高度,以千分之一英寸为单位;使用负值指定字体点数,比如,-18代表18点。一般来说,使用点数更精确些weight:指定字体的磅数,正常字体为400磅,粗体为700磅fontpitch:FontPitch枚举类型,指定字体标准。有效取值为:Default! - 缺省值;Fixed! - 固定形式;Variable! - 可变形式fontfamily:FontFamily枚举类型,指定字体系列。有效取值为:AnyFont!、Decorative!、Modern!、Roman!、Script!、Swiss!italic:boolean类型,指定是否使用斜体样式。有效取值为:TRUE - 使用斜体样式;FALSE - 不使用斜体样式。缺省值为FALSEunderline:boolean类型,指定是否加下划线。有效取值为:TRUE - 加下划线;FALSE - 不加下划线。缺省值为FALSE返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,PrintDefineFont()函数返回NULL。用法在一个打印作业中,应用程序能够最多同时定义8种字体。当应用程序需要使用更多的字体时,可以在使用了某个字体号输出内容后使用PrintDefineFont()函数将该字体号对应的字体更换为其它字体。 -------------------------------------------------------------------------------- PrintLine() 功能在当前打印页上绘出指定厚度的一条线。 语法PrintLine ( printjobnumber, x1, y1, x2, y2, thickness ) 参数printjobnumber:用PrintOpen()函数打开的打印作业号x1:integer类型,指定直线起点的x坐标,以千分之一英寸为单位y1:integer类型,指定直线起点的y坐标,以千分之一英寸为单位x2:integer类型,指定直线终点的x坐标,以千分之一英寸为单位y2:integer类型,指定直线终点的y坐标,以千分之一英寸为单位thickness:integer类型,指定直线的厚度,以千分之一英寸为单位返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,PrintLine()函数返回NULL。用法应用程序执行了PrintLine()函数后,该函数并不改变打印光标的位置。 -------------------------------------------------------------------------------- PrintOpen() 功能启动打印作业并返回作业号。 语法PrintOpen ( { jobname } ) 参数jobname:string类型,可选项,指定要打开打印作业的名称,该名称将显示在打印管理器窗口中返回值Long。函数执行成功时返回打印作业号,发生错误时返回-1。如果任何参数的值为NULL,PrintOpen()函数返回NULL。用法应用程序执行PrintOpen()函数后,启动新的打印作业并走纸到下一页,同时将打印机缺省字体设置为该打印作业的字体。打印光标的位置位于打印区的左上角。其它同组的打印函数使用PrintOpen()函数返回的作业号来标识作业。需要注意的是,使用PrintOpen()函数打开打印作业、使用同组的其它函数完成打印任务后,必须使用PrintClose()关闭打印作业,或根据需要使用PrintCancel()函数取消打印作业。 -------------------------------------------------------------------------------- PrintOval() 功能在指定位置以指定线宽绘制椭圆或圆。 语法PrintOval ( printjobnumber, x, y, width, height, thickness ) 参数printjobnumber:用PrintOpen()函数打开的打印作业号x:integer类型,指定椭圆或圆外形框左上角的x坐标,以千分之一英寸为单位y:integer类型,指定椭圆或圆外形框左上角的y坐标,以千分之一英寸为单位width:integer类型,指定椭圆或圆外形框的宽度,以千分之一英寸为单位height:integer类型,指定椭圆或圆外形框的高度,以千分之一英寸为单位thickness:integer类型,指定椭圆或圆外边线的厚度,以千分之一英寸为单位返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,PrintOval()函数返回NULL。用法应用程序执行了PrintOval()函数后,该函数并不改变打印光标的位置。PrintOval()函数绘出的椭圆或圆是实心的,也就是说,执行该函数后,椭圆或圆下面的文字或图像将完全被覆盖。如果想在椭圆或圆中输出文字或图形,那么应用程序应该首先绘制椭圆或圆,然后使用其它函数在椭圆或圆中输出文字或图形。 -------------------------------------------------------------------------------- PrintPage() 功能将当前页发送给打印机或打印池并在当前打印作业中启动一个新的打印页。 语法PrintPage ( printjobnumber ) 参数printjobnumber:用PrintOpen()函数打开的打印作业号返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,PrintPage()函数返回NULL。 -------------------------------------------------------------------------------- PrintRect() 功能在指定位置以指定线宽打印矩形。 语法PrintRect ( printjobnumber, x, y, width, height, thickness ) 参数printjobnumber:用PrintOpen()函数打开的打印作业号x:integer类型,指定矩形左上角的x坐标,以千分之一英寸为单位y:integer类型,指定矩形左上角的y坐标,以千分之一英寸为单位width:integer类型,指定矩形的宽度,以千分之一英寸为单位height:integer类型,指定矩形的高度,以千分之一英寸为单位thickness:integer类型,指定矩形边线的厚度,以千分之一英寸为单位返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,PrintRect()函数返回NULL。用法应用程序执行了PrintRect()函数后,该函数并不改变打印光标的位置。PrintRect()函数绘出实心的矩形,也就是说,执行该函数后,矩形下面的文字或图像将完全被覆盖。如果想在矩形中输出文字或图形,那么应用程序应该首先绘制矩形,然后使用其它函数在矩形中输出文字或图形。 -------------------------------------------------------------------------------- PrintRoundRect() 功能在指定位置以指定线宽打印圆角矩形。 语法PrintRoundRect(printjobnumber,x,y,width,height,xradius,yradius,thickness) 参数printjobnumber:用PrintOpen()函数打开的打印作业号x:integer类型,指定圆角矩形左上角的x坐标,以千分之一英寸为单位y:integer类型,指定圆角矩形左上角的y坐标,以千分之一英寸为单位width:integer类型,指定圆角矩形的宽度,以千分之一英寸为单位height:integer类型,指定圆角矩形的高度,以千分之一英寸为单位xradius:integer类型,指定圆角矩形圆角部分的x半径,以千分之一英寸为单位yradius:integer类型,指定圆角矩形圆角部分的y半径,以千分之一英寸为单位thickness:integer类型,指定圆角矩形边线的厚度,以千分之一英寸为单位返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,PrintRoundRect()函数返回NULL。用法应用程序执行了PrintRoundRect()函数后,该函数并不改变打印光标的位置。PrintRoundRect()函数绘出实心的圆角矩形,也就是说,执行该函数后,圆角矩形下面的文字或图像将完全被覆盖。如果想在圆角矩形中输出文字或图形,那么应用程序应该首先绘制圆角矩形,然后使用其它函数在圆角矩形中输出文字或图形。 -------------------------------------------------------------------------------- PrintScreen() 功能在打印作业中打印屏幕图像。 语法PrintScreen ( printjobnumber, x, y {, width, height } ) 参数printjobnumber:用PrintOpen()函数打开的打印作业号x:integer类型,指定要打印屏幕图像左上角在打印页上的x坐标,以千分之一英寸为单位y:integer类型,指定要打印屏幕图像左上角在打印页上的y坐标,以千分之一英寸为单位width:integer类型,可选项,指定屏幕图像的打印宽度,以千分之一英寸为单位。如果省略了该参数,那么PowerBuilder按屏幕的原始宽度打印屏幕图像。如果指定了该参数,必须同时指定height参数height:integer类型,可选项,指定屏幕图像的打印高度,以千分之一英寸为单位。如果省略了该参数,那么PowerBuilder按屏幕的原始高度打印屏幕图像返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,PrintScreen()函数返回NULL。 -------------------------------------------------------------------------------- PrintSend() 功能直接向打印机发送任意字符串,通常用于发送打印机的控制代码。 语法PrintSend ( printjobnumber, string {, zerochar } ) 参数printjobnumber:用PrintOpen()函数打开的打印作业号string:string类型,指定发送到打印机的字符串。在该字符串中,使用非打印字符的ASCII码值表示非打印字符zerochar:integer类型,可选项,指定在string参数中用于表示数值0的ASCII码值。有效取值在1到255之间返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,PrintSend()函数返回NULL。用法应用程序使用PrintSend()函数可以直接向打印机发送控制序列(换码序列),比如,设置打印文字的浓淡、打印页的四周空白等。不同类型的打印机使用不同的控制序列,你需要翻一翻你的打印机手册。由于PowerBuilder使用数值0(即ASCII码为0的字符)结束每个字符串,因此,如果打印控制序列中包含了数值0,应用程序需要使用其它字符在参数string中替代数值0,并用zerochar参数指明这个替代字符。一般来说,应该选择一个打印机控制序列中不使用的字符作为0值字符的替代字符。通常情况下,按下述次序组织打印作业:1. 使用PrintOpen()函数打开打印作业2. 使用PrintSend()函数设置打印机特性,比如打印方向、四周空白等3. 使用PrintDefineFont()和PrintSetFont()函数设置该打印作业使用的字体4. 使用该组的其它函数打印输出文字或图形5. 执行PrintClose()函数关闭打印作业 -------------------------------------------------------------------------------- PrintSetFont() 功能设置当前打印作业使用的字体。 语法PrintSetFont ( printjobnumber, fontnumber ) 参数printjobnumber:用PrintOpen()函数打开的打印作业号fontnumber:指定该打印作业使用字体的字体编号,该编号与PrintDefineFont()函数中定义的编号应该对应,字体编号的有效取值在1到8之间,0表示使用打印机的缺省字体返回值Integer。函数执行成功时返回当前字体的高度,发生错误时返回-1。如果任何参数的值为NULL,PrintSetFont()函数返回NULL。 -------------------------------------------------------------------------------- PrintSetSpacing() 功能设置行间距因子,打印函数将使用该因子来决定行间距。 语法PrintSetSpacing ( printjobnumber, spacingfactor ) 参数printjobnumber:用PrintOpen()函数打开的打印作业号spacingfactor:指定行间距因子,用字符高度的倍数表示,缺省值为1.2返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,PrintSetSpacing()函数返回NULL。用法在PowerBuilder应用程序中,行间距与字符的高度成正比,缺省值为字符高度的1.2倍。当Print组函数生成新行时,系统自动把打印光标的x坐标位置设置为0,y坐标位置在原有基础上增加当前行距值。使用PrintSetSpacing()函数可以改变当前打印作业的行距。 -------------------------------------------------------------------------------- PrintSetup() 功能打开打印机设置对话框。 语法PrintSetup ( ) 返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,PrintSetup()函数返回NULL。用法当系统中安装了多种打印机时,在Windows 95中PrintSetup()函数打开如图2-1所示的对话框,单击“Setup”按钮设置打印机各种特性。如果系统中只有一个打印机,则直接打开该打印机的打印设置对话框。需要注意的是,在Windows95和Windows NT 3.51以后的版本中,使用PrintSetup()函数设置的打印机设置只对当前应用起作用,并不影响其它应用的打印机设置。对Windows 3.1来说,使用PrintSetup()函数设置的打印机设置影响系统中的所有应用。 -------------------------------------------------------------------------------- PrintText() 功能在指定位置打印一行文本。 语法PrintText ( printjobnumber, string, x, y {, fontnumber } ) 参数printjobnumber:用PrintOpen()函数打开的打印作业号string:string类型,指定要打印的文本x:integer类型,指定文本开始打印位置的x坐标,以千分之一英寸为单位y:integer类型,指定文本开始打印位置的y坐标,以千分之一英寸为单位fontnumber:可选参数,指定打印文本使用的字体号,该编号由PrintDefineFont()函数确定。省略该参数时,以打印作业的当前字体打印文本返回值Integer。函数执行成功时返回文本打印后打印光标的x位置,即参数x的值加上打印文本的宽度。发生错误时返回-1。如果任何参数的值为NULL,PrintText()函数返回NULL。 -------------------------------------------------------------------------------- PrintWidth() 功能确定一个字符串在指定打印作业中按当前字体所占的宽度,以千分之一英寸为单位。 语法PrintWidth ( printjobnumber, string ) 参数printjobnumber:用PrintOpen()函数打开的打印作业号string:string类型,指定要决定其打印宽度的字符串返回值Integer。函数执行成功时返回按当前字体计算的字符串打印宽度,以千分之一英寸为单位,发生错误时返回-1。如果任何参数的值为NULL,PrintWidth()函数返回NULL。 -------------------------------------------------------------------------------- PrintX() 功能返回打印光标的x坐标位置。 语法PrintX ( printjobnumber ) 参数printjobnumber:用PrintOpen()函数打开的打印作业号返回值Integer。函数执行成功时返回打印光标的x坐标位置,以千分之一英寸为单位,发生错误时返回-1。如果任何参数的值为NULL,PrintX()函数返回NULL。 -------------------------------------------------------------------------------- PrintY() 功能返回打印光标的y坐标位置。 语法PrintY ( printjobnumber ) 参数printjobnumber:用PrintOpen()函数打开的打印作业号返回值Integer。函数执行成功时返回打印光标的y坐标位置,以千分之一英寸为单位,发生错误时返回-1。如果任何参数的值为NULL,PrintY()函数返回NULL。  LibraryCreate() 功能创建一个空的PowerBuilder应用库,并可根据需要在创建应用库的同时添加库注解。 语法LibraryCreate ( libraryname{, comments } ) 参数libraryname:string类型,指定要创建应用库的名称,可以带上路径,不带路径时在当前目录下创建应用库comments:string类型,可选项,指定要创建的应用库的注解返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,LibraryCreate()函数返回NULL。用法LibraryCreate()函数在指定路径下创建一个空的PowerBuilder应用库(PBL)。如果在指定应用库名称时没有指定文件的扩展名,那么该函数自动加上扩展名.PBL。 -------------------------------------------------------------------------------- LibraryDelete() 功能删除应用库库文件或应用库中的数据窗口对象。 语法LibraryDelete ( libraryname{, objectname, objecttype } ) 参数libraryname:string类型,指定库名,可以带上路径,不带路径时在系统搜索路径下查找应用库objectname:string类型,可选项,指定要从库中删除的数据窗口对象的名称objecttype:LibImportType类型,可选项,指定要删除对象的类型,目前仅支持ImportDataWindow!返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,LibraryDelete()函数返回NULL。 用法执行LibraryDelete()函数时,如果未指定后两个参数,那么该函数删除指定的应用库;如果指定了后两个参数,那么该函数删除指定应用库中指定的数据窗口对象。LibraryDelete()函数只能删除应用库中的数据窗口对象,如果想删除其它对象,那么只能在PowerBuilder开发环境中使用库管理画笔(Library Painter)来实现了。 -------------------------------------------------------------------------------- LibraryDirectory() 功能 得到应用库中指定对象的信息列表,内容包括对象名称、最近修改日期和时间、以及对象的注释。 语法LibraryDirectory ( libraryname, objecttype ) 参数libraryname:string类型,指定PowerBuilder应用库的名称,如果名称中未指定路径,那么该函数根据操作系统标准的文件搜索路径查找指定文件objecttype:LibDirType枚举类型,指定希望函数列出的对象类型,有效取值请参看用法。返回值String。函数执行成功时返回一个字符串,每个对象占用一行,行中各信息之间使用Tab字符(~t)分隔。行中信息格式为:对象名~t修改日期/时间~t注释~n发生错误时函数返回空字符串("")。如果任何参数的值为NULL,LibraryDirectory()函数返回NULL。 用法LibraryDirectory()函数的objecttype参数是个LibDirType枚举类型的量,其有效取值为:DirAll!得到所有对象的信息DirApplication!得到应用对象的信息DirDataWindow!得到所有数据窗口对象的信息DirFunction!得到所有函数对象的信息DirMenu!得到所有菜单对象的信息DirPipeline!得到所有数据管道对象的信息DirProject!得到工程对象的信息DirQuery!得到所有查询对象的信息DirStructure!得到所有结构对象的信息DirUserObject!得到所有用户对象的信息DirWindow!得到所有窗口对象的信息使用LibraryDirectory()函数得到指定对象的名称、修改日期/时间以及可能的注释后,应用程序既可以使用Pos()函数进行定位和字符串分割,也可以使用数据窗口的ImportString()函数将结果显示在数据窗口中。 -------------------------------------------------------------------------------- LibraryExport() 功能从指定应用库中以对象的语法定义格式卸出对象。 语法LibraryExport ( libraryname, objectname, objecttype ) 参数libraryname:string类型,指定要移出对象的应用库的名称,如果名称中未指定路径,那么该函数根据操作系统标准的文件搜索路径查找指定文件objectname:string类型,指定要移出对象的名称objecttype :LibExportType枚举类型,指定要移出对象的类型,具体取值请参看用法返回值String。函数执行成功时返回指定对象的语法,该语法与使用库管理画笔(Library Painter)移出对象时的语法相同,区别在于LibraryExport()函数省略了移出语法的头部。如果发生错误,则函数返回空字符串("")。如果任何参数的值为NULL,LibraryExport()函数返回NULL。 用法LibraryExport()的objecttype参数的可能取值为: ExportApplication!应用对象ExportDataWindow!数据窗口对象ExportFunction!函数对象ExportMenu!菜单对象ExportPipeline!数据管道对象ExportProject!工程对象ExportQuery!查询对象ExportStructure!结构对象ExportUserObject!用户对象ExportWindow!窗口对象 -------------------------------------------------------------------------------- LibraryImport() 功能将以语法格式表示的数据窗口对象装入指定的应用库中。 语法LibraryImport(libraryname,objectname,objecttype,syntax,errors{,comments } ) 参数libraryname:string类型,指定要移入对象的应用库的名称,如果名称中未指定路径,那么该函数根据操作系统标准的文件搜索路径查找指定文件objectname:string类型,指定要移入的数据窗口对象的名称 objecttype:LibImportType枚举类型,指定要移入对象的类型,目前该函数只支持ImportDataWindow!,表示只能向应用库中移入数据窗口对象syntax:string类型,指定要移入数据窗口对象的语法errors:string类型变量,用于在发生错误时保存出错信息comments:string类型,可选项,用于指定移入对象的注解返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,LibraryImport()函数返回NULL。 用法当应用程序在运行过程中动态创建数据窗口对象后,可以使用LibraryImport()函数把动态数据窗口对象的定义保存到应用库中,以后就可以直接使用该对象了。 FileClose() 功能关闭先前用FileOpen()函数打开的文件。 语法FileClose ( fileno ) 参数fileno:integer,指定要关闭文件的文件句柄,该句柄使用FileOpen()函数打开文件时得到返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果fileno参数的值为NULL,那么FileClose()函数返回NULL。 -------------------------------------------------------------------------------- FileDelete() 功能删除指定的文件。 语法FileDelete ( filename ) 参数filename:string类型,指定要删除文件的文件名,其中可以包含路径返回值Boolean。函数执行成功时返回TRUE,发生错误时返回FALSE。如果filename参数的值为NULL,那么FileDelete()函数返回NULL。 -------------------------------------------------------------------------------- FileExists() 功能检查指定的文件是否存在。 语法FileExists ( filename ) 参数filename:string类型,指定要检查存在性的文件的文件名,其中可以包含路径返回值Boolean。如果指定文件存在时返回TRUE,不存在时返回FALSE。如果filename参数的值为NULL,那么FileExists()函数返回NULL。用法如果filename参数指定的文件被另一个应用加锁锁住,那么FileExists()函数也将返回FALSE。 -------------------------------------------------------------------------------- FileLength() 功能得到指定文件的长度(以字节为单位)。 语法FileLength ( filename ) 参数filename:string类型,指定要得到其长度的文件的文件名,其中可以包含路径返回值Long。函数执行成功时返回指定文件的长度(以字节为单位)。如果指定的文件不存在,函数返回-1。如果filename参数的值为NULL,那么FileLength()函数返回NULL。 -------------------------------------------------------------------------------- FileOpen() 功能以指定的读写方式打开指定的文件,同时返回该文件的句柄。 语法FileOpen(filename{,filemode{,fileaccess{,filelock{,writemode,{creator,filetype}}}}}) 参数filename:string类型,指定要打开文件的名称,其中可以包含路径 filemode:FileMode枚举类型,可选项,指定文件打开方式。有效取值为:?LineMode! - 缺省值,行模式;?StreamMode! - 流模式fileaccess:FileAccess枚举类型,可选项,指定文件访问方式。有效取值为:?Read! - 缺省值,只读方式,这样打开的文件只能进行读操作;?Write! - 只写方式,这样打开的文件只能进行写操作?filelock:FileLock枚举类型,可选项,指定文件加锁方式。有效取值为:n LockReadWrite! - 缺省值,只有打开该文件的用户能够访问该文件,其它用 户对该文件的访问均被拒绝;n LockRead! - 只有打开该文件的用户能够读该文件,但其它任何用户均可写该文件;n LockWrite! - 只有打开该文件的用户能够写该文件,但其它任何用户均可读该文件;n Shared! - 所有用户均可读写该文件writemode:WriteMode枚举类型,可选项,当fileaccess参数指定为Write!时,该参数指定在指定文件已经存在时数据的添加方式。有效取值为:?Append! - 缺省值,将数据添加到原文件尾部;?Replace! - 覆盖原有数据creator:可选项,用于Macintosh机,使用四个字符的字符串指定文件的创建者。指定该参数后,必须同时指定filetype参数filetype:可选项,用于Macintosh机,使用四个字符的字符串指定文件类型返回值Integer。函数执行成功时返回打开文件的句柄,随后的文件操作函数利用该句柄完成对文件的操作。发生错误时函数返回-1。如果任何参数的值为NULL,那么FileOpen()函数返回NULL。用法当文件以行模式打开时,每执行一次FileRead()函数读取一行数据;每执行一次FileWrite()函数,该函数自动在写出的字符串末尾增加一个回车(CR)换行(LF)符(这是应用程序在Windows 系统中运行时的情况,在UNIX下只加一个换行字符)。当文件以流模式打开时,执行一次FileRead()函数读取32,765个字节的数据,如果余下数据没有这么多,那么FileRead()函数就读取所有余下的数据;执行一次FileWrite()函数时,最多可写入32,765个字节的数据,并且不添加回车换行字符。当文件以写方式使用FileOpen()函数打开时,如果指定的文件不存在,那么FileOpen()函数创建该文件。 -------------------------------------------------------------------------------- FileRead() 功能从指定文件中读取数据。 语法FileRead ( fileno, variable ) 参数fileno:integer类型,指定文件句柄(由FileOpen()函数得到)variable:string或blob类型的变量,用于保存读取的数据返回值Integer。函数执行成功时返回读取的字符数或字节数;如果在读取任何字符前读到了文件结束符(EOF),则FileRead()函数返回-100;当指定文件以行模式打开时,如果在读取任何字符之前遇到了回车(CR)或换行(LF)字符,则FileRead()函数返回0。如果发生其它错误,FileRead()函数返回-1。如果任何参数的值为NULL,那么FileRead()函数返回NULL。用法当指定文件以行模式(Line Mode)打开时,FileRead()函数一次读取一行数据,并把它保存到参数variable中,然后跳过行结束符(回车换行符,操作系统不同,使用的字符也不同),把文件指针移动到下一行的起始位置。当文件以流模式(Stream Mode)打开时,FileRead()函数或一直读取到文件结尾,或读取32,765字节的数据,决定于两者哪个数据长度更短些。 -------------------------------------------------------------------------------- FileSeek() 功能将文件指针移动到指定位置。读写文件时相应函数会自动移动文件指针。 语法FileSeek ( fileno, position, origin ) 参数fileno: integer类型,指定文件句柄(由FileOpen()函数得到) position:long类型,指定相对于origin参数指定位置的新位置偏移量,以字节为单位 origin:SeekType枚举类型,指定从哪里开始移动文件指针,即指针移动的基准。有效取值为:?FromBeginning! - 缺省值,从文件开头移动指针;?FromCurrent! - 从当前位置移动文件指针;?FromEnd! - 从文件结尾处移动文件指针返回值Long。函数执行成功时返回指针移动后的指针位置。如果任何参数的值为NULL,那么FileSeek()函数返回NULL。 -------------------------------------------------------------------------------- FileWrite() 功能向指定文件中写数据。 语法FileWrite (fileno , variable ) 参数fileno:integer类型,指定文件句柄(由FileOpen()函数得到)variable:string或blob类型,其值将写入fileno参数指定的文件返回值Integer。函数执行成功时返回写入文件的字符或字节数,发生错误时返回-1。如果任何参数的值为NULL,那么FileWrite()函数返回NULL。用法FileWrite()函数从当前文件指针开始写入指定数据,写入之后,将文件指针调整到刚刚写入数据的下一个字节位置。当文件以writemode参数设置为Replace!方式打开时,文件指针最初位于文件的开头位置;当文件以writemode参数设置为Append!方式打开时,文件指针最初位于文件的结尾位置。当文件以行模式打开时,执行FileWrite()函数时,该函数自动在每次写入数据的后面加上回车换行符,并把文件指针移动到回车换行符后面。当文件以流模式打开时,FileWrite()函数一次最多写入32,765个字节。如果variable参数中数据的长度超过了32,765个字节,那么FileWrite()函数只向文件中写入前32,765个字符并返回32,765。 -------------------------------------------------------------------------------- GetFileOpenName() 功能显示打开文件对话框,让用户选择要打开的文件。 语法GetFileOpenName(title,pathname,filename{,extension{,filter}}) 参数title:string类型,指定对话框的标题pathname:string类型变量,用于保存该对话框返回的文件路径及文件名filename:string类型变量,用于保存该对话框返回的文件名extension:string类型,可选项,使用1到3个字符指定缺省的扩展文件名 filter:string类型,可选项,其值为文件名掩码,指定显示在该对话框的列表框中供用户选择的文件名满足的条件(比如*.*,*.TXT,*.EXE等)返回值Integer。函数执行成功时返回1;当用户单击了对话框上的“Cancel”按钮时函数返回0;发生错误时返回-1。如果任何参数的值为NULL,那么GetFileOpenName()函数返回NULL。 用法filter参数的格式为:description,*. ext缺省值为:"All Files (*.*),*.*"其中,description说明扩展名的意义,比如“所有文件”、“文本文件”等。你可以根据需要指定在打开文件对话框中显示的文件名类型。当需要指定多种文件类型时,各类型之间使用逗号分隔,例如:"PIF 文件, *.PIF, 批处理文件, *.BAT"需要注意的是,该函数只是得到一个文件名,而并没有打开文件,需要打开文件时,依然需要使用FileOpen()函数。 -------------------------------------------------------------------------------- GetFileSaveName() 功能显示保存文件对话框,让用户选择要保存到的文件。 语法GetFileSaveName(title,pathname,filename{,extension{,filter}}) 参数title:string类型,指定对话框的标题pathname:string类型变量,用于保存该对话框返回的文件路径及文件名filename:string类型变量,用于保存该对话框返回的文件名extension:string类型,可选项,使用1到3个字符指定缺省的扩展文件名filter:string类型,可选项,其值为文件名掩码,指定显示在该对话框的列表框中供用户选择的文件名满足的条件(比如*.*,*.TXT,*.EXE等)返回值Integer。函数执行成功时返回1;当用户单击了对话框上的“Cancel”按钮时函数返回0;发生错误时返回-1。如果任何参数的值为NULL,那么GetFileSaveName()函数返回NULL。 用法filter参数的格式为:description,*. ext缺省值为:"All Files (*.*),*.*"其中,description说明扩展名的意义,比如“所有文件”、“文本文件”等。你可以根据需要指定在打开文件对话框中显示的文件名类型。当需要指定多种文件类型时,各类型之间使用逗号分隔,例如:"PIF 文件, *.PIF, 批处理文件, *.BAT"需要注意的是,该函数只是得到一个文件名,而并没有打开文件,需要打开文件时,依然需要使用FileOpen()函数。 GetCommandDDE() 功能得到DDE客户应用发送的命令。 语法GetCommandDDE ( string ) 参数string:string类型的变量,用于保存DDE客户应用发送的命令返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果string参数的值为NULL, GetCommandDDE()函数返回NULL。用法当DDE客户应用向DDE服务器应用发送一条命令时,这个动作将触发DDE服务器应用活动窗口的RemoteExec事件,在这个事件的事件处理程序中,可以使用GetCommandDDE()函数得到DDE客户应用发送的命令。 -------------------------------------------------------------------------------- GetCommandDDEOrigin() 功能确定哪一个DDE客户应用向服务器发送了命令。 语法GetCommandDDEOrigin ( applstring ) 参数applstring:string变量,用于保存发送命令的DDE客户应用的名称返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果applstring参数的值为 NULL,GetCommandDDEOrigin()函数返回NULL。 -------------------------------------------------------------------------------- GetDataDDE() 功能得到DDE客户应用发送的数据。 语法GetDataDDE ( string ) 参数string:string类型变量,用于保存接收到的数据返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL, GetDataDDE()函数返回NULL。 -------------------------------------------------------------------------------- GetDataDDEOrigin()功能确定哪个DDE客户应用发送了数据。 语法GetDataDDEOrigin ( applstring, topicstring, itemstring ) 参数applstring:string类型变量,用于保存客户应用的名称topicstring:string类型变量,用于保存主题(比如,在Excel中,主题可以是REGION.XLS)itemstring:string类型变量,用于保存数据项标识(比如,在Excel中,数据项标识可能是R1C2)返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,GetDataDDEOrigin()函数返回NULL。 -------------------------------------------------------------------------------- RespondRemote() 功能向客户端应用指明最近的命令或数据是否已经接收。 语法RespondRemote ( boolean ) 参数boolean:其值为boolean量的逻辑表达式,TRUE表示接收先前收到的命令或数据,FALSE表示不接收先前收到的命令或数据返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果boolean参数的值为NULL,RespondRemote()函数返回NULL。 -------------------------------------------------------------------------------- SetDataDDE() 功能向DDE客户应用发送数据。 语法SetDataDDE ( string {, applname, topic, item } ) 参数string:指定要发送到DDE客户应用的数据applname:string类型,可选项,指定接收数据的客户应用的DDE名称topic:string类型,可选项,指定基础数据组item:string类型,可选项,指定基础数据组中的数据项返回值Integer。函数执行成功时返回1,发生错误时返回下述值之一:-1函数调用的环境不对-2数据未被接收如果任何参数的值为NULL,SetDataDDE()函数返回NULL。 -------------------------------------------------------------------------------- StartServerDDE() 功能将当前应用设置为DDE服务器。 语法StartServerDDE ( { windowname, } applname, topic {, item } ) 参数windowname:可选项,指定服务器窗口名,缺省值为当前窗口applname:当前应用的DDE名称topic:string类型,指定DDE客户应用能够引用的基本数据组item:由逗号(,)分隔的一个或多个字符串,指定服务器应用支持的数据项返回值Integer。函数执行成功时返回1,发生错误时返回-1,表示当前应用已经设置为DDE服务器。如果任何参数的值为NULL,StartServerDDE()函数返回NULL。 -------------------------------------------------------------------------------- StopServerDDE() 功能停止当前应用的DDE服务器功能。执行该函数后,发给该应用的任何DDE客户应用请求都将失败。 语法StopServerDDE ( { windowname, } applname, topic ) 参数windowname:可选项,指定要关闭服务器功能的服务器窗口名,缺省值为当前窗口,如果当前应用有多个服务器窗口,那么必须指定该参数applname:当前应用的DDE名称topic:string类型,应该与StartServerDDE()中对应参数相同返回值Integer。函数执行成功时返回1,发生错误时返回-1,表示当前应用未曾作为DDE服务器启动。如果任何参数的值为NULL,StopServerDDE()函数返回NULL。 CPU() 功能得到自当前应用程序启动后开始CPU所消耗的时间,以毫秒为单位。 语法CPU() 返回值Long。返回自当前应用程序启动后开始CPU所消耗的时间,以毫秒为单位。 -------------------------------------------------------------------------------- Idle() 功能该函数在用户每次活动(例如,按键盘、移动鼠标等)后重置定时器,n秒后触发应用对象的Idle事件。 语法Idle ( n ) 参数n:指定空闲时间间隔,以秒为单位。该参数的值设置为0时,停止空闲检测,不再触发应用对象的Idle事件返回值Integer。函数执行成功时返回1,此时启动定时器。如果不能启动定时器或定时器未启动而n的值指定为0时,函数返回-1。如果任何参数的值为NULL,Idle()函数返回NULL。用法利用Idle()函数,应用程序可以构造自己的屏幕保护程序,避免安全数据的泄露。当使用Idle()函数已经启动了定时器后,如果再次以非0参数调用Idle()函数,那么该函数重设时间间隔,但并不启动新的定时器。Idle()函数启动定时器后,如果在指定的时间间隔(从用户最近一次操作算起)内没有操作应用程序,那么就触发应用对象的Idle事件,在这个事件中可以编写关闭窗口、退出数据库登录等一系列代码,然后使用Restart()函数重新启动应用程序,起到保密的目的。发生下述任何情况时,系统自动重置定时器(即重新开始计时):n 用户在该应用程序的任何窗口内移动鼠标或单击鼠标(双击鼠标时首先触发单击事件)n 在该应用程序的某个窗口是当前窗口时用户按下了任意一个或多个键n 在该应用程序的窗口最小化时,用户在该应用的图标上单击鼠标或移动鼠标n 在该应用程序的窗口最小化并且该应用程序是当前应用程序(应用名称被加亮显示)时,用户按了任何按键n 可视数据窗口检索数据时引起的编辑控件(指漂浮在数据窗口当前行/列上的编辑控件)重绘操作 -------------------------------------------------------------------------------- Timer() 功能 在指定的时间间隔内反复触发指定窗口的定时器事件。 语法Timer ( interval {, windowname } ) 参数interval:指定两次触发Timer事件之间的时间间隔,有效值在0到65之间。如果该参数的值指定为0,那么关闭定时器,不再触发指定窗口的Timer事件windowname:窗口名,指定时间间隔到时要触发哪个窗口的Timer事件。省略该参数时,触发当前窗口的Timer事件返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,Timer()函数返回NULL。用法使用Timer()函数可以周期性地触发指定窗口的Timer事件,这样,每当时间间隔过去时,应用程序都可以完成一些周期性的工作,比如绘制简单动画等。将Timer()的interval参数设置为非0值时启动定时器并开始计时;将该函数的interval参数设置为0时关闭定时器,终止计时任务。需要注意的是,在Microsoft Windows系统中,该函数能够计时的最小时间间隔为0.055秒(约1/18秒),如果把interval参数的值设置小于0.055,那么该定时器将每隔0.055秒触发一次窗口的Timer事件。Microsoft Windows 3.x最多只支持系统中同时启动16个定时器。 RegistryDelete() 功能删除Windows系统注册库中的一个键或键的某个值。 语法RegistryDelete ( key, valuename ) 参数key:string类型,指定键名,将删除该键或删除该键的某个值valuename:string类型,指定要删除的值的名称。如果想删除键、键的值、以及其下的所有子键,那么将该参数指定为空字符串返回值Integer。函数执行成功时返回1,发生错误时返回-1。用法为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。 -------------------------------------------------------------------------------- RegistryGet() 功能从系统注册库中得到指定键的值。 语法RegistryGet ( key, valuename, valuetype, valuevariable ) 参数key:string类型,指定键名valuename:string类型,指定要访问值的名称。每个键可以有一个未命名的值和多个命名的值。要访问未命名的值,把该参数指定为空字符串("")valuetype:RegistryValueType枚举类型,指定值的数据类型。有效取值请参看用法valuevariable:用于保存键值的变量,其数据类型应该与valuetype参数指定的类型相匹配返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果valuevariable的数据类型与valuetype参数指定的类型不匹配,将引发运行错误。 用法valuetype的可能取值为:RegString!以空字符结束的字符串RegExpandString!以空字符结束的字符串,其中包括了对环境变量的非扩展应用RegBinary!二进制数据ReguLong!32位数据ReguLongBigEndian!32位大数据RegLink!Unicode符号链RegMultiString!动态字符串数组为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。 -------------------------------------------------------------------------------- RegistryKeys() 功能从系统注册库中得到指定键的有效子键。 语法RegistryKeys ( key, subkeys ) 参数key:string类型,指定键名subkeys:字符串数组变量,用于保存各子键返回值Integer。函数执行成功时返回1,发生错误时返回-1。用法在subkeys参数中可以使用定长数组,也可以使用动态数组。使用动态数组时,数组的上界反映了能够得到的子键个数。当使用定长数组时,其数组元素个数必须足够多,保证能够容纳所有子键,但是,在具体得到子键之前,没有办法能够预先知道实际子键个数。为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。 -------------------------------------------------------------------------------- RegistrySet() 功能在系统注册库中设置或创建指定键。 语法RegistrySet ( key, valuename, valuetype, value ) 参数key:string类型,指定键名valuename:string类型,指定要访问值的名称。每个键可以有一个未命名的值和多个命名的值。要访问未命名的值,把该参数指定为空字符串("")。如果注册库中不存在指定值名,该函数将创建新的值名valuetype:RegistryValueType枚举类型,指定值的数据类型。有效取值请参看用法value:要设置的值,其数据类型应该与valuetype参数指定的类型相匹配返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果valuevariable的数据类型与valuetype参数指定的类型不匹配,将引发运行错误。用法valuetype的可能取值为:RegString!以空字符结束的字符串RegExpandString!以空字符结束的字符串,其中包括了对环境变量的非扩展应用RegBinary!二进制数据ReguLong!32位数据ReguLongBigEndian!32位大数据RegLink!Unicode符号链RegMultiString!动态字符串数组为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。 -------------------------------------------------------------------------------- RegistryValues() 功能得到与指定键相关的一组值名。该函数在Windows 3.1中无效。 语法RegistryValues ( key, valuename ) 参数key:string类型,指定键名valuename:字符串数组变量,用于保存值名返回值Integer。函数执行成功时返回1,发生错误时返回-1。用法在valuename 参数中可以使用定长数组,也可以使用动态数组。使用动态数组时,数组的上界反映了能够得到的值名个数。当使用定长数组时,其数组元素个数必须足够多,保证能够容纳所有值名,但是,在具体得到值名之前,没有办法能够预先知道实际值名个数。为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。  Clipboard() 功能提取或替换Windows系统剪贴板的文本内容。 语法Clipboard ( { string } ) 参数string:string类型,可选项,指定要复制到系统剪贴板上的文本。如果剪贴板上已有内容的话,该文本将取代剪贴板的当前内容返回值String。函数执行成功时,如果剪贴板上包含文本数据,那么函数返回剪贴板的当前内容;如果剪贴板上包含非文本数据(比如位图)或不包含任何数据,那么函数返回空字符串("")。如果string参数的值为NULL,Clipboard()函数返回NULL。用法无论是否指定string参数,Clipboard()都将返回剪贴板的当前内容。当指定string参数时,剪贴板的原有内容被string参数的值取代;省略string参数时,仅仅得到剪贴板的内容。 -------------------------------------------------------------------------------- CommandParm() 功能得到应用程序运行时指定的命令参数。 语法CommandParm ( ) 返回值String。函数执行成功时返回应用程序运行时的命令行参数,函数执行错误或没有命令行参数时函数返回空字符串("")。用法命令行参数是应用程序启动时跟在应用程序名称后面的任何参数,比如,在运行窗口中输入了下述命令:MyAppl C:\EMPLOYEE\EMPLIST.TXT那么MyAppl应用程序中使用CommandParm()函数得到的命令行参数为:C:\EMPLOYEE\EMPLIST.TXT当应用程序的命令行中包含几个参数时,CommandParm()函数作为一个字符串返回所有参数。利用字符串操作函数可以分离各参数。在应用对象的Open事件中没有必要执行CommandParm()函数。此时,Open事件的argument参数中包含了命令行参数。 -------------------------------------------------------------------------------- DoScript() 功能执行AppleScript程序段,该函数只在Macintosh平台上有效。 语法DoScript ( script, result ) 参数script:string类型,指定要运行的程序段(script)result:string类型,由AppleScript程序段返回的结果信息或出错信息返回值Integer。返回由AppleScript返回的结果代码。如果任何参数的值为NULL,DoScript()函数返回NULL。 -------------------------------------------------------------------------------- GetApplication() 功能得到当前应用对象的句柄,这样你可以查询或设置应用对象的属性(通常用于编写通用代码)。 语法GetApplication ( ) 返回值Application。返回当前应用对象的句柄。 -------------------------------------------------------------------------------- GetEnvironment() 功能得到操作系统、处理器、屏幕显示等与系统相关的信息。 语法GetEnvironment ( environmentinfo ) 参数environmentinfo:Environment对象名,用于保存系统环境信息返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果参数environmentinfo的值为NULL,GetEnvironment()函数返回NULL。用法当开发交叉平台项目时,利用GetEnvironment()函数,应用程序能够得到当前运行的操作系统、使用的CPU类型、操作系统的版本、屏幕的大小以及颜色数等信息,这些信息的具体表示请参阅本书环境对象(Environment Object)的介绍。 -------------------------------------------------------------------------------- GetFocus() 功能确定当前焦点位于哪个控件上。 语法GetFocus ( ) 返回值GraphicObject。函数执行成功时返回当前得到焦点控件的引用,发生错误时返回无效引用。用法应用程序利用IsValid()函数可以检测GetFocus()是否返回有效的控件引用。同时,使用TypeOf()函数可以确定控件的类型。 -------------------------------------------------------------------------------- Post() 功能将指定消息加入到某个窗口的消息队列中,这个窗口既可以是PowerBuilder应用的窗口,也可以是其它应用的窗口。 语法Post( handle, messageno, word, long ) 参数handle:long类型,指定窗口的系统句柄,将向该窗口邮寄消息messageno:UnsignedInteger类型,指定要邮寄的消息号 word:long类型,指定与消息一起邮寄的word类参数值。如果messageno参数指定的消息不使用该参数,那么将这个参数的值设置为0long:long类型或string,指定与消息一起邮寄的long型参数值或字符串返回值Boolean。如果任何参数的值为NULL,Post()函数返回NULL。 用法Post()函数用于向窗口发送非PowerBuilder预定义事件的消息,这个窗口可以是PowerBuilder应用的窗口,也可以是其它应用的窗口。Post()函数把发送的消息放置在指定窗口消息队列的尾部,然后返回到应用程序中,它并不等待相应事件事件处理程序的执行。这一点与Send()函数不同,Send()函数直接触发指定窗口相应的事件,执行事件处理程序后返回到调用应用中。因此,我们说Post()函数采用的是异步方式,Send()函数采用的是同步方式。Post()函数的参数handle指定接收消息的窗口句柄,对PowerBuilder窗口来说,使用Handle()函数可以得到该句柄。对其它应用程序的窗口来说,可以调用系统API函数查找窗口并得到相应窗口的句柄。如果应用程序要邮寄PowerBuilder定义事件(包括预定义事件和用户定义事件),那么使用PostEvent()函数既简单有方便。当应用程序在long参数位置指定一个字符串时,Post()函数复制一个该字符串的副本,然后将副本的地址传送给指定窗口。 -------------------------------------------------------------------------------- ProfileInt() 功能从初始化文件(.ini)中读取整型设置值。 语法ProfileInt ( filename, section, key, default ) 参数filename:string类型,指定初始化文件的名称,可以包括路径,省略路径时,该函数按操作系统的标准路径搜索指定文件section:string类型,指定要得到的值所在的节(Section)key:string类型,指定要得到的值的名称,不用区分大小写default:integer类型,当指定的文件、节名、项目名不存在或不能转换为整数时,函数返回该参数指定的值返回值Integer。函数执行成功时,在指定的文件、节名、项目名不存在任何错误的情况下,函数返回相应项的值;如果指定的文件、节名、项目名不存在或不能转换为整数时,函数返回default参数指定的缺省值。如果发生错误,函数返回-1。如果任何参数的值为NULL,ProfileInt()函数返回NULL。 -------------------------------------------------------------------------------- ProfileString() 功能从初始化文件(.ini)中读取字符串型设置值。 语法ProfileString ( filename, section, key, default ) 参数filename:string类型,指定初始化文件的名称,可以包括路径,省略路径时,该函数按操作系统的标准路径搜索指定文件section:string类型,指定要得到的值所在的节(Section)key:string类型,指定要得到的值的名称,不用区分大小写default:string类型,当指定的文件、节名、项目名不存在时,函数返回该参数指定的值返回值String。函数执行成功时,在指定的文件、节名、项目名不存在任何错误的情况下,函数返回相应项的值;如果指定的文件、节名、项目名不存在,函数返回default参数指定的缺省值。如果发生错误,函数返回空字符串。如果任何参数的值为NULL,ProfileString()函数返回NULL。 -------------------------------------------------------------------------------- Restart() 功能停止所有程序段的执行、关闭所有窗口、提交事务、断开与数据库的连接,然后重新启动应用程序。 语法Restart() 返回值Integer。函数执行成功时返回1,发生错误时返回-1。 -------------------------------------------------------------------------------- Run() 功能运行指定的应用程序。 语法Run ( string {, windowstate } ) 参数string:string类型,指定要运行的应用程序的名称,其中可以包括路径以及相应的参数,就像在命令行中键入的那样windowstate:WindowState枚举类型,可选项,指定程序运行时的窗口状态。有效取值为:Maximized! - 最大化窗口;Minimized! - 最小化窗口;Normal! - 缺省值,正常窗口返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,Run()函数返回NULL。 用法使用Run()函数,应用程序能够启动操作系统中的任何程序。当在Run()参数中指定了要启动应用程序的参数时,参数的意义、格式、个数等由具体的应用程序确定。如果在Run()函数的string参数中指定了文件名但没有给出扩展名时,PowerBuilder认为该文件的扩展名为.EXE。要运行扩展名不是.EXE的应用程序(比如.BAT, .COM, 或.PIF),必须在Run()函数的参数中指定文件的扩展名。 -------------------------------------------------------------------------------- Send() 功能向窗口发送指定的消息并立即执行相应的事件处理程序。 语法Send( handle, messageno, word, long ) 参数handle:long类型,指定窗口的系统句柄,将向该窗口发送消息messageno:UnsignedInteger类型,指定要发送的消息号word:long类型,指定与消息一起发送的word类参数值。如果messageno参数指定的消息不使用该参数,那么将这个参数的值设置为0long:long类型或string,指定与消息一起发送的long型参数值或字符串返回值Long。函数执行成功时返回Windows系统调用SendMessage()的返回值,发生错误时返回-1。如果任何参数的值为NULL,Send()函数返回NULL。 用法Send()函数用于向窗口发送非PowerBuilder预定义事件的消息,这个窗口可以是PowerBuilder应用的窗口,也可以是其它应用的窗口。Send()函数直接触发指定窗口相应的事件,执行事件处理程序后返回到调用应用中,这一点与Post()函数不同,Post()函数把发送的消息放置在指定窗口消息队列的尾部,然后返回到应用程序中,它并不等待相应事件事件处理程序的执行。因此,我们说Post()函数采用的是异步方式,Send()函数采用的是同步方式。Send()函数的参数handle指定接收消息的窗口句柄,对PowerBuilder窗口来说,使用Handle()函数可以得到该句柄。对其它应用程序的窗口来说,可以调用系统API函数查找窗口并得到相应窗口的句柄。实际上,Send()函数把它的各个参数直接传送给Windows的系统调用SendMessage()。在各种C++开发工具的WINDOWS.H文件中可以查到各消息编号。如果应用程序要发送PowerBuilder定义事件(包括预定义事件和用户定义事件),那么使用TriggerEvent()函数既简单有方便。当应用程序在long参数位置指定一个字符串时,Send()函数复制一个该字符串的副本,然后将副本的地址传送给指定窗口。 -------------------------------------------------------------------------------- SetProfileString() 功能设置初始化文件中指定项的值。 语法SetProfileString ( filename, section, key, value ) 参数filename:string类型,指定初始化文件的名称,可以包括路径,省略路径时,该函数按操作系统的标准路径搜索指定文件section:string类型,指定要设置的值所在的节(Section)key:string类型,指定要设置的值的名称,不用区分大小写default:string类型,指定要设置项的值返回值Integer。函数执行成功时返回1,指定的文件未找到或指定的文件不能访问时函数返回-1。如果任何参数的值为NULL,SetProfileString()函数返回NULL。 -------------------------------------------------------------------------------- ShowHelp() 功能显示应用程序帮助,该帮助使用Microsoft Windows帮助系统进行操作。 语法ShowHelp ( helpfile, helpcommand {, typeid } ) 参数helpfile:string类型,指定帮助文件的名称helpcommand:HelpCommand枚举类型,指定显示帮助的格式。有效取值为:Index! - 显示目录主题,使用该值时不要指定typeid参数;Keyword! - 转移到由指定关键字确定的主题;Topic! - 显示指定主题的帮助typeid:可选项,指定帮助主题返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,ShowHelp()函数返回NULL。 -------------------------------------------------------------------------------- SignalError() 功能触发应用对象的SystemError事件,通常用于代码调试。 语法SignalError ( { number }, { text } ) 参数number:integer类型,可选项,其值将保存到Error对象的number属性中text:string类型,可选项,其值将保存到Error对象的text属性中返回值Integer。函数执行成功时返回1,发生错误时返回-1。 -------------------------------------------------------------------------------- Yield() 功能将控制权转移给其它图形对象,包括非PowerBuilder对象。该函数检测消息队列,如果有消息,就把消息取出。利用该函数可以在执行耗时较长的操作时把控制权转让给其它应用。 语法Yield() 返回值Boolean。如果在消息队列中提取到了消息,那么函数返回TRUE,否则返回FALSE。用法正常情况下,PowerBuilder应用程序在执行一段代码(比如函数或事件处理程序)的过程中不响应用户的操作。对耗时短暂的代码段来说,这种处理方式没有什么不妥的地方,但是,如果某个代码段的执行耗时较长,应用程序又希望为用户提供更多的控制权,那么需要在这段代码中插入Yield()函数,让用户能够进行其它操作,特别在循环执行的代码中更应该如此。应用程序执行Fill() 功能建立一个由指定字符串填充的指定长度的字符串。 语法Fill ( chars, n ) 参数chars:string类型,指定用于重复填充的字符串n:long类型,指定由该函数返回的字符串的长度返回值String。函数执行成功时返回n个字符的字符串,该字符串以参数chars中的字符串重复填充而成。如果参数chars中的字符个数多于n个,那么使用chars字符串的前n个字符填充函数返回的字符串;如果参数chars中的字符个数少于n个,那么使用chars字符串反复填充,直到返回的字符串长度达到n为止。如果任何参数的值为NULL,Fill()函数返回NULL。 -------------------------------------------------------------------------------- Left() 功能得到字符串左部指定个数的字符。 语法Left ( string, n ) 参数string:string类型,指定要提取子串的字符串n:long类型,指定子串长度返回值String。函数执行成功时返回string字符串左边n个字符,发生错误时返回空字符串("")。如果任何参数的值为NULL,Left()函数返回NULL。如果n的值大于string字符串的长度,那么Left()函数返回整个string字符串,但并不增加其它字符。 -------------------------------------------------------------------------------- LeftTrim() 功能返回指定字符串删除了左部空格后的字符串。 语法LeftTrim ( string ) 参数string:string类型,指定要删除左部空格的字符串返回值String。函数执行成功时返回删除了string字符串左部空格的字符串,发生错误时返回空字符串("")。如果任何参数的值为NULL,LeftTrim()函数返回NULL。 -------------------------------------------------------------------------------- Len() 功能得到字符串的长度。 语法Len (string) 参数string:string类型变量返回值Long。函数执行成功时返回字符串的长度,发生错误时返回-1。如果任何参数的值为NULL,则Len()函数返回NULL。 -------------------------------------------------------------------------------- Lower() 功能将字符串中的大写字母转换为小写字母。 语法Lower ( string ) 参数string:要将其中的大写字母转换为小写字母的字符串返回值String。函数执行成功时返回将大写字母转换为小写字母后的字符串,发生错误时返回空字符串("")。如果string参数的值为NULL,Lower()函数返回NULL。 -------------------------------------------------------------------------------- Match() 功能确定字符串中是否包含指定模式的字符。 语法Match ( string, textpattern ) 参数string:string类型,指定要检查是否匹配指定模式的字符串textpattern:string类型,指定文本匹配模式返回值Boolean:如果字符串string与模式textpattern相匹配,则函数返回TRUE,否则返回FALSE。如果指定的匹配模式无效或上述两个参数中的任何一个未曾赋值,那么Match()函数返回FALSE。如果任何参数的值为NULL,Match()函数返回NULL。 用法textpattern参数的写法与正则表达式十分相似,它由元字符和普通字符组成。每个元字符都有不同的匹配含义,普通字符则与其自身相匹配。下面是匹配模式中使用的元字符及其意义: ^指示字符串的开始,例如,^asd表示以asd开头的字符串,字符串asdfgh与模式^asd匹配,而字符串basdfg与模式^asd不匹配。 $指示字符串的结束,例如,red$表示所有以red结束的字符串均与该模式匹配,而redo与模式red$不匹配。 .匹配任意单个字符,例如,^&&$匹配任何六个字符组成的字符串。 []匹配括号中列出的字符,例如,^[ABC]$匹配由一个字符组成的字符串,其值只能是A或B或C。 -与方括号一起,指定匹配字符的范围,例如,^[A-Z]$只匹配那些由一个大写字母组成的字符串。方括号里还可以使用^字符,表示匹配不在指定范围内的任何字符,例如,[^0-9]匹配除数字外的任何字符。 *,+,?这些符号跟在一个字符后面表示该字符可以出现的次数。星号(*)表示可以出现0次或任意次;加号(+)表示可以出现多次,但至少出现一次;问号(?)表示出现0次或一次。例如,A*匹配0个或多个A(没有A、A、AA、AAA、AAAA、**);A+匹配1个或多个A(A、AA、AAA、AAAA、**);A?匹配空串或1个A。 \斜杠(\)是转义字符,它去掉特殊字符的特殊含义,比如,模式\$匹配字符$,模式\\匹配字符\。 -------------------------------------------------------------------------------- Mid() 功能取字符串的子串。 语法Mid ( string, start {, length } ) 参数string:string类型,指定要从中提取子串的字符串start:long类型,指定子串第一个字符在string字符串中的位置,第一个位置为1length:long类型,可选项,指定子串的长度返回值String。函数执行成功时返回string字符串中从start位置开始、长度为length的子串。如果start参数的值大于string中字符个数,那么Mid()函数返回空字符串。如果省略了length参数或length参数的值大于从start开始、string字符串中余下字符的长度,那
更新说明: 2017-02-04(yaya) Ls command: Empty Folder returns false. 2016-12-08(yaya) 修正lz4、vhd不显示解压缩进度指示。增加lzma解压缩进度指示。 2016-11-09(不点) 0x8205 bit 5 = 1: 使checkkey闲置循环停止指令。 2016-04-13(yaya) 支持动画菜单 setmenu --graphic-entry=类型=菜单行数=菜单列数=图形宽(像素)=图形高(像素)=菜单行间距(像素) 菜单项0的路径文件名 类型: 位0:高亮指定颜色 位1:高亮颜色翻转 位2:高亮显示线框 位7:背景透明(最好使用黑色背景) 文件名: *n.??? 格式 n=00-99 高亮颜色由 color HIGHLIGHT=0xrrggbb 指定。 字符可以使用任意字型、字高、颜色,可以辅以图标。 2016-03-25(yaya) 菜单字符可以使用不同字型。 例如:"七" 使用不同字型,将 .hex 文件中的 unicode 码 “4e03” 修改为 “0080”, 将菜单中的 "七" 修改为 “\X0080”。 2016-03-23(yaya) 增强 echo 函数功能。 例如:echo -e \x18 显示 UTF-8 字符 0x18。 echo -e \X2191 显示 unicode 字符 0x2191。 2016-03-15(yaya) 1.增加动画控制热键 F2:播放/停止。 2.增加动画控制位 0x835b,位0:0/1=停止/播放。 3.增加精简字库模式:--simp=起始0,终止0,...,起始3,终止3 中文可以使用 --simp= ,内置字库应当包含 DotSize=[font_h],['simp'] 例如:font --font-high=24 --simp= /24_24.hex DotSize=24,simp 不使用热键: 可以加载 32*32 unifont 全字库 使用热键: 可以加载 24*24 unifont 全字库 使用精简字库: 可以加载 46*46 汉字全字库 使用精简字库及热键:可以加载 40*40 汉字全字库 4.不再支持 bin 格式字库。 2016-03-03(yaya) 1.增加图像背景色设置方法。 splashimage --fill-color=[0xrrggbb] 作用之一,作为小图像的背景。 作用之二,直接作为菜单的背景(即不加载图像背景)。此时只设置字体的前景色即可。 2.增加动画菜单。 splashimage --animated=[type]=[delay]=[last_num]=[x]=[y] START_FILE 类型[type]:bit 0-3: 播放次数 bit 4: 永远重复 bit 7: 透明背景 type=00:禁止播放 播放n次:序列图像各显示n次,时间独占。可作为启动前导、序幕。 永远重复:序列图像无限循环,时间与菜单共享。可作为菜单里的动画。 背景透明:即抠像。要求4角像素为背景色。 背景色最好为白色或黑色,这样可以去除一些灰色杂波。若是彩色背景,则应当非常干净。 提醒:请以16进制方式输入。否则易错。 延迟[delay]:序列图像之间的延迟。单位是滴答,即1/18.2秒。 序列数[last_num]:序列图像总数(2位数,从1开始计数)。 偏移[x]、[y]:图像偏移,单位像素。 起始图像文件 START_FILE 命名规则:*n.??? n: 1-9 或 01-99 或 001-999。 3.增加固定图像的背景色可以透明。 splashimage [--offset=[type]=[x]=[y]] FILE 类型[type]:bit 7: 透明背景 2016-02-14(yaya) setmenu 函数增加菜单项目背景短/满参数(默认短) 2016-01-19(yaya) splashimage 函数增加图像起始偏移(默认0) 2015-08-20(yaya) 1.支持非
RAR 是一个让你在命令行模式中管理压缩文件的控制台应用。RAR 提供压缩、加 密、数据恢复和许多其它此手册中描述的其它功能。 RAR 只支持 RAR 格式压缩文件,它默认有 .rar 扩展名。不支持ZIP 和其他格 式。即使创建压缩文件时指定了 .zip 扩展名,它仍然是 RAR 格式的。Windows 用户 可以 WinRAR,它支持更多的压缩文件类型,包括 RAR 和 ZIP 格式。 WinRAR 提供了图形用户界面和命令行模式。虽然控制台 RAR 和图形界面 WinRAR 有相似的命令行语法,但是它们还有有一些不同。所以推荐使用此 rar.txt 手册用于 控制台 RAR(rar.exe 在 Windows 版本的情况下),winrar.chm 是图形界面 WinRAR (winrar.exe) 的帮助文件。 配置文件 ~~~~~~~~ Unix 版本的 RAR 从用户的 home 或 /etc 目录中的 .rarrc 文件读取配置文件信息 (存储在 HOME 环境变量中) Windows 的版本 RAR 从 rar.ini 文件读取配置文件信息,它放在 rar.exe 文件相 同的目录中。 这个文件包含下列字符串: switches=任何 RAR 开关,用空格分开 例如: switches=-m5 -s 环境变量 ~~~~~~~~ 可以通过建立"RAR"环境变量来添加默认参数到命令行中. 例如,在 Unix 中,下列命令行可以被添加到你的配置中: RAR='-s -md1024' export RAR RAR 将使用这个字符串作为命令行的默认参数,并将使用 1024KB 字典大小来创建 “固实”压缩文件。 RAR 控制选项使用下列优先级: 命名行开关 最高优先级 在 RAR 变量中的开关 低优先级 保存在配置文件中的开关 最低优先级 日志文件 ~~~~~~~~ 如果在命令行或配置文件中指定开关 -ilog ,RAR 将会把处理压缩文件中遇到的错误 等写到日志文件中。读取开关 -ilog 描述获得更多信息。 固实压缩的文件列表 - rarfiles.lst ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ rarfiles.lst 包含一个用户定义的文件列表,告诉 RAR 添加文件到固实压缩文件时的顺 序。它可以包含文件名通配符和指定项目 -$default。默认项目定义了这个文件中与 其他项目不相符时的顺序清单位置。 注释字符是 ';'. 在 Windows 中,这个文件应该放在 RAR 所在的或 %APPDATA%\WinRAR 目录中, 在 Unix 中- 放在用户的 home 目录或在 /etc 中。 提高压缩率和操作速度的提示: - 在压缩文件中,小文件应该被组织在一起; - 频繁被处理的文件应该放在开始的位置。 普通的掩码越靠近顶端优先权就越高,但是这个规则存在例外。如果 rarfiles.lst 包含两个掩码,并且所有文件既匹配第一个掩码,也匹配第二个掩码, 较小的子集 或者更精确的匹配拥有更高的优先权。例如,如果你用 *.cpp 和 f*.cpp 掩码, f*.cpp 拥有更高的优先权。 RAR 命令行语法 ~~~~~~~~~~~~~~ 语法 RAR [ - ] [ ] [ ] [ ] 描述 命令行选项 (命令和开关) 提供了使用 RAR 创建和管理压缩文件的控制方法。命 令是一个字符串(或单个的字母),命令 RAR 去执行一个相应的操作。开关被用来 改变 RAR 执行操作的方法。其它参数是压缩文件名和被压缩的文件或要从压缩文件 中被解压文件。 列表文件是一个包括处理的文件名的纯文本文件。第一列应该以文件名开始。可以 在//字符后添加注释。例如,你可以创建包含下列字符串的 backup.lst: c:\work\doc\*.txt //备份文本文档 c:\work\image\*.bmp //备份图片 c:\
用户手册 RAR 4.00 控制台版本 欢迎使用 RAR 压缩文件管理器! 简介 RAR 是一个强力压缩工具,允许你管理和操作压缩文件。控制台 RAR 只支持 RAR 格式,带有的 ".rar" 扩展名的文件。ZIP 和其他格式不被支持。Windows 用户可以 安装图形界面 RAR 版本 - WinRAR,它可以处理更多的压缩文件类型。 RAR 的功能包括: * 高度成熟的原创压缩算法 * 对于文本、声音、图像和 32 位和 64 位 Intel 可执行程序压缩的特殊优化算法 * 获得比类似工具更好的压缩率,使用'固实'压缩 * 身份校验(只有注册版本可用) * 自解压压缩文件和分卷压缩(SFX) * 对物理损伤的压缩文件的恢复能力 * 锁定,密码,文件顺序列表,文件安全和更多 配置文件 Unix 版本的 RAR 从用户的 home 或 /etc 目录中的 .rarrc 文件读取配置文件信息 (存储在 HOME 环境变量中) Windows 的版本 RAR 从 rar.ini 文件读取配置文件信息,它放在 rar.exe 文件相 同的目录中。 这个文件包含下列字符串: switches=任何 RAR 开关,用空格分开 例如: switches=-m5 -s 环境变量 可以通过建立"RAR"环境变量来添加默认参数到命令行中. 例如,在 UNIX 中,下列命令行可以被添加到你的配置中: RAR='-s -md1024' export RAR RAR 将使用这个字符串作为命令行的默认参数,并将使用 1024KB 字典大小来创建 “固实”压缩文件。 RAR 控制选项使用下列优先级: 命名行开关 最高优先级 在 RAR 变量中的开关 低优先级 保存在配置文件中的开关 最低优先级 日志文件 如果在命令行或配置文件中指定开关 -ilog ,RAR 将会把处理压缩文件中遇到的错误 等写到日志文件中。读取开关 -ilog 描述获得更多信息。 固实压缩的文件列表 - rarfiles.lst rarfiles.lst 包含一个用户定义的文件列表,告诉 RAR 添加文件到固实压缩文件时的顺 序。它可以包含文件名通配符和指定项目 -$default。默认项目定义了这个文件中与 其他项目不相符时的顺序清单位置。 注释字符是 ';'. 在 Windows 中,这个文件应该放在 RAR 所在的或 %APPDATA%\WinRAR 目录中, 在 Unix 中- 放在用户的 home 目录或在 /etc 中。 提高压缩率和操作速度的提示: - 在压缩文件中,小文件应该被组织在一起; - 频繁被处理的文件应该放在开始的位置。 普通的掩码越靠近顶端优先权就越高,但是这个规则存在例外。如果 rarfiles.lst 包含两个掩码,并且所有文件既匹配第一个掩码,也匹配第二个掩码, 较小的子集 或者更精确的匹配拥有更高的优先权。例如,如果你用 *.cpp 和 f*.cpp 掩码, f*.cpp 拥有更高的优先权。 RAR 命令行语法 ~~~~~~~~~~~~~~ 语法 RAR <命令> [ -<开关> ] <压缩文件> [ <@列表文件...> ] [ <文件...> ] [ <解压路径\> ] 描述 命令行选项 (命令和开关) 提供了使用 RAR 创建和管理压缩文件的控制方法。命 令是一个字符串(或单个的字母),命令 RAR 去执行一个相应的操作。开关被用来 改变 RAR 执行操作的方法。其它参数是压缩文件名和被压缩的文件或要从压缩文件 中被解压文件。 列表文件是一个包括处理的文件名的纯文本文件。第一列应该以文件名开始。可以 在//字符后添加注释。例如,你可以创建包含下列字符串的 backup.lst: c:\work\doc\*.txt //备份文本文档 c:\work\image\*.bmp //备份图片 c:\work\misc 接着运行: rar a backup @backup.lst 如果你希望从标准输入设备读取文件名,指定空的文件列表名(只有@)。 在列表文件中 Win32 控制台 RAR 使用 OEM (DOS) 编码。 你可以在同一命令行指定普通文件名和列表文件。如果文件和列表 文件都未被指定,那么 RAR 将默认是 *.*,来处理所有文件 在一个 UNIX 环境变量中,你需要将通配符置于引号中,避免被外壳扩展。例如, 这个命令将从当前路径中的 RAR 压缩文件解压所有的 *.asm 文件: rar e '*.rar' '*.asm' 命令可以是下列中的任何一个: a 添加文件到压缩文件中。 例子: 1) 从当前目录添加所有的 *.hlp 文件到 help.rar 压缩文件: rar a help *.hlp 2) 把当前目录和子目录的所有文件压缩为 362000 字节大小、固实的、 自解压分卷压缩文件并对没个卷添加恢复记录: rar a -r -v362 -s -sfx -rr save 因为尾指定文件名,假设为所有文件 (*)。 3) 作为一个特别的例外,如果目录名被作为参数指定并且目录名不包 含文件掩码和以反斜线结尾,即使指定了 -r 开关,目录和子目录的所 有内容都会被添加到压缩文件中。 下面的命令会把 Bitmaps 目录和它的子目录中的所有文件添加到 RAR 压缩文件 Pictures.rar 中: rar a Pictures.rar Bitmaps 4) 如果目录包含文件掩码或以反斜线结尾,将会应用普通的规则,你 需要指定 -r 开关来处理它的子目录。 下列命令会把 Bitmaps 目录中除了子目录外的所有文件添加,因为未 指定开关 -r: rar a Pictures.rar Bitmaps\* c 添加压缩文件注释。当压缩文件被处理时注释被显示。文件的注释长度限 制到 32767 字节 例子: rar c distrib.rar 注释也可以使用 -z[名称] 开关从文件添加: 下列命令从 info.txt 文件添加一个注释: rar c -zinfo.txt dummy cf 添加文件注释。当使用'v'命令时显示文件注释。文件的注释长度限制到 32767 字节。 例子: rar cf bigarch *.txt ch 改变压缩文件参数。 此命令能和大多数压缩文件变量开关一起使用修改压缩文件参数。对于象 -av, -cl, -cu, -tl 等没有专门命令的开关特别方便。 它不能重新压缩、解密或加密压缩文件数据,它不能整合或创建卷。如果 不和其它开关一起使用,'ch' 命令仅复制压缩文件数据而不修改它。 例如: 设置压缩文件时间为最新的文件: rar ch -tl files.rar cw 写压缩文件注释到指定文件。 输出文件格式依赖于 -sc 开关。 如果输出文件名没有指定,注释数据会被发送到标准输出设备。 例子: 1) rar cw oldarch comment.txt 2) rar cw -scuc arc unicode.txt 3) rar cw arc d 从压缩文件中删除文件。请注意,如果这个命令导致压缩文件中所有文件 全部删除,这个空的压缩文件将被删除。 e 解压文件到当前目录。 f 更新压缩文件中的文件。 更新打包到压缩文件后被改变的文件。这个命令不 向压缩文件中添加新文件。 i[i|c|h|t]=<字符串> 在压缩文件中查找字符串。 支持下列可选参数: i - 不区分大小写(默认); c - 区分大小写搜索; h - 十六进制搜索; t - 使用 ANSI, Unicode 和 OEM 字符表 (只有 Win32 可用); 如果没有指定任何参数,它可以使用简化的命令行语法 i<字符串> 来代 替 i=<字符串> 它允许指定带有另外一个参数的 't' 变量,例如,ict=字符串 在上面提 及的所有表中执行区分大小写的搜索。 例子: 1) rar "ic=first level" -r c:\*.rar *.txt 在 c:\*.rar 压缩文件中的 *.txt 文件执行区分大小写的 "first level" 字符串的搜索 2) rar ih=f0e0aeaeab2d83e3a9 -r e:\text 在 e:\text 目录下的 rar 压缩文件中搜索十六进制字符串 f0 e0 ae ae ab 2d 83 e3 a9。 k 锁定压缩文件。任何试图改变压缩文件的命令都会被忽略。 例子: rar k final.rar l[t,b] 压缩文件的内容列表[技术信息]。和 'v' 命令一样列出文件,但不包括 文件路径。也就是只显示文件名。当使用't'变量时可选技术信息(主操作 系统,固实标志和老版本标记)被显示。变量 'b' 强制 RAR 只输出单纯 的文件名,而没有其他任何的附加信息。 m[f] 移动到压缩文件中[只用于文件]。移动文件和目录会使压缩操作完成后它 们被删除。如果使用变量'f'和/或应用开关'-ed',则不删除目录。 p 打印文件到标准输出设备。 你可以把这个命令和 -inul 开关一起使用来禁止所有的 RAR 信息,并只 打印文件数据。当你需要发送一个文件到标准输出设备时,这也许很重要。 r 修复压缩文件。压缩文件修复是在两阶段中完成的。首先,在损坏的压缩 文件中查找恢复记录(参照'rr'命令)。如果压缩文件包含恢复记录,并且 损坏数据部分是连续的,而且少于N*512字节(N 处是放入压缩文件恢复块 的数字),则成功恢复压缩文件的机会非常高。当这个阶段完成,一个新的 压缩文件将被创建,名为_RECOVER.RAR。 如果损坏的压缩文件不包含恢复记录或如果压缩文件没有完全恢复导致大 的损伤,将执行第二阶段。这一阶段期间只重建压缩文件的结构,而不可 能恢复 CRC 校验失败的文件。它仍然可能恢复未受损的文件,因文件结 构破坏。这对于非固实压缩文件通常有用。 当第二阶段完成,重建结构的压缩文件将被保存为 rebuilt.arcname.rar, 'arcname' 的位置是原始压缩文件名。 RAR/DOS32 版本使用 _recover.rar 和 _reconst.rar 而不是上面提及的 名字。 在恢复记录进行中,当发现可疑文件时,RAR 可以提示用户。 可疑项目 名字: <可能的文件名> 大小: <大小> 压缩后: <压缩后大小> 添加它: 是/否/全部 回答 'y' 把这个项目添加到文件 rebuilt.arcname.rar 中。 例子: rar r buggy.rar rc 使用恢复卷(.rev 文件)重建丢失的卷。你需要指定任何已存在的卷作为 压缩文件名,例如,'rar rc backup.part03.rar' 读取 'rv' 命令描述得到关于恢复卷的信息。 rn 重命名压缩文件。 命令语法是: rar rn <压缩文件名> <源文件名1> <目标文件名1> ... <源文件名N> <目 标文件名N> 例如,下列命令: rar rn data.rar readme.txt readme.bak info.txt info.bak 在压缩文件 data.rar 中将把 readme.txt 重命名为 readme.bak 并把 info.txt 重命名为 info.bak。 在源文件和目标文件名中可以使用通配符来进行简单像改变文件扩展名的名 称转换。例如: rar rn data.rar *.txt *.bak 将把所有的 *.txt 文件重命名为 *.bak。 RAR 不检查目标文件名是否已经在压缩文件中存在,所以你需要小心,防止 重名。尤其是使用通配符时特别重要。这个命令有潜在的危险,因为一个错 误的通配符可以损坏所有的压缩文件名。 rr[N] 添加数据恢复记录。可选,多余信息(恢复记录)可以被添加到压缩文件 中。这将导致压缩文件大小稍微增加,但能在软盘错误或其它数据丢失 情况下帮助恢复压缩文件。一个恢复记录最大包含 524288 个恢复块。 块的数目可以在'rr'(N = 1,2 .. 524288)命令中直接指定或不用用户 指定,而是根据压缩文件的大小自动设定:一个恢复信息大小大约是总 压缩文件大小的1%,通常允许恢复达到压缩文件总大小的0.6%的连续数 据。 也可以以压缩文件大小的百分比来指定恢复记录的大小。只要把%添加到 命令参数后。 例如: rar rr3% arcname 注意,如果你从.bat 或 .cmd文件运行这个命令时,你需要使用rr3%%代 替rr3%,因为批处理命令把符号'%'作为批处理文件开始的参数。你可以 使用 'p' 代替'%',所以'rr3p'也可运行。 如果受损的数据是连续性的,则每个恢复记录块帮助恢复损坏信息的512 字节。如果多处损坏这个值将降低。 恢复记录的大小可以使用公式<压缩文件大小>/256 + <恢复记录数>*512 字节估计。 rv[N] 创建恢复卷(.rev文件),以后它可以用于重建卷组中丢失的文件。这个命 令只对多卷压缩文件敏感,你需要在组中指定第一个分卷文件的文件名。 例如: rar rv3 data.part01.rar 这个功能可以被用来备份,例如,发送一个多卷压缩文件到一个新组,并 且部分接收者没有收其中的一些文件。重新发送恢复卷代替普通卷,可以 减少传送文件的总数。 每个恢复卷可以重建一个丢失的 RAR 卷。例如,如果你有30个卷,3个恢 复卷,你可以创建任何3个丢失的卷。如果.rev文件的数目少于丢失卷的 数目,重建将不可能。普通和恢复卷的总数不能超过255。 原来的 RAR 卷在卷被创建后不能被修改。修复算法使用存储在 REV 文件 和 RAR 卷中的数据来重建丢失的 RAR 卷。所有如果你修改了 RAR 卷, 例如,在创建 REV 文件后锁定它们,修复操作将失败。 选项 <N> 参数指定创建恢复卷的数目,必须少于RAR卷的总数。你也可以 附加一个百分号到这个参数上,这样创建的.rev文件的数目将等于从 RAR 卷总数获得的这个百分比。 例如: rar rv15% data.part01.rar RAR 不管是使用‘rc’命令或自动时,如果在解压时无法定位下一卷,并 且发现可用数目的 .rev 文件,对丢失的卷和损坏的卷都试图重建。 损坏卷的原始副本在被重建前重命名为 *.bad。例如,volname.part03.rar 将被重命名为volname.part03.rar.bad。 s[名称] 转换压缩文件成自解压格式。压缩文件和自解压模块合并(使用 default.sfx模块或在开关中指定)。在 Windows 版本中 default.sfx 应 该放在RAR.exe 所在目录下,在 Unix 中在用户的 home 目录中,在 /usr/lib 或 /usr/local/lib 下。 s- 从已存在的自解压压缩文件中删除自解压模块。RAR 创建一个不带自解压 模块的新的压缩文件,原来的自解压文件不会被删除。 t 测试压缩文件。为了验证指定的文件,这个命令执行虚拟的文件解压操作, 不写出任何输出数据流。 例子: 在当前目录测试压缩文件: 或对于 Unix: rar t '*' 当前目录开始,测试所有子目录下的压缩包: rar t -r * 或对于 Unix: rar t -r '*' u 更新压缩文件中的文件。添加不在压缩文件中的文件和更新打包后改变了的 文件。 v[t,b] 详细列出压缩文件内容[技术信息]。文件列出所使用的格式:绝对路径名,文 件注释,原始和压缩后的大小,压缩率,最近更新日期和时间,属性,CRC, 压缩方式和解压所需的最小RAR版本。当使用't'变量时可选技术信息(主操作 系统,固实标志和老的文件版本标记)显示。变量 'b' 强制 RAR 只输出单纯 的文件名,而没有其他任何的附加信息。 列出所有压缩卷的内容,使用星号('*')代替压缩文件扩展名或使用'-v' 开关。 例子: 1) 列出 system.rar 压缩文件的内容 (技术信息)并使用重定向符输出 到文件 techlist.lst 中 rar vt system >techlist.lst 2) 列出 tutorial.rar 压缩文件的内容 (单纯文件名模式) rar vb tutorial x 带绝对路径解压 例子: rar x -av- -c- dime 10cents.txt 解压指定的文件到当前路径。AV 检查和注释显示被禁用。 开关 (与命令结合使用): -? 显示命令和开关的帮助。和没有参数或输入非法命令行选项时相同。 -- 停止开关扫描 这个开关告诉 RAR 命令行中没有更多的开关了。如果压缩文件或文件名 以 - 符号开头,可以使用它。没有'--'开关,这样的名字将被作为开关 对待。 例子: 从当前目录添加所有文件到固实压缩文件'-StrangeName' RAR a -s -- -StrangeName -ac 压缩或解压后清除存档属性(只有Windows版本可用). -ad 附加压缩文件名到目标路径中。 这个选项可以在解压一组压缩文件时使用。默认条件下 RAR 把从压缩文 件中解压的文件放在同一目录下,但是这个开关使从每个压缩文件中解压 的文件都创建一个单独的目录。 例子: rar x -ad *.rar data\ RAR 将每一个解压的文件在'data'下创建子目录。 -ag[格式] 使用当前的日期和时间生成压缩文件名。 当创建压缩文件时附加当前日期字符串到压缩文件名上。用于每日备份。 附加的字符串格式有几种可选的格式参数定义或使用"YYYYMMDDHHMMSS"。 字符串的格式可以包含下列字符: Y - 年 M - 月 MMM - 使用文本字符串作为月名(Jan,Feb,等.) W - 年的第几周 (每星期从星期一开始) A - 星期几 (星期一 -1,星期日 - 7) D - 月的第几天 E - 年的第几天 H - 小时 M - 分 (如果在小时后,被作为分钟对待) S - 秒 N - 压缩文件数。RAR 搜索要生成的名字的文件是否存在,如果发现 它已经存在,将递增一个压缩文件数字,直到生成一个唯一的名字。 'N' 格式化字符在创建卷时不被支持。 上面列出的每个字符串仅表示添加到压缩文件名中的一个字符。例如, 使用 WW 表示 2 数字的星期或 YYYY 定义 4 数字的年。 如果在格式化字符串的第一个字符是'+',日期字符串和基本压缩文件名 位置交换,所以日期将在压缩文件名之前。 格式化字符串可以包含在 '{' 和 '}' 包含的可选字符。此文本插入到压 缩文件名中。 所有其它字符被不变地添加到文件名上。 如果你需要更新已经存在的压缩文件,小心使用 -ag 开关。依赖于以前 使用的 -ag 传送的格式化字符串和时间,生成的和现有的压缩文件名可 能不匹配。在这种情况下 RAR 会创建一个新的压缩文件,而不是更新现 有文件。 例子: 1) 使用默认 YYYYMMDDHHMMSS 格式 rar a -ag backup 2) 使用 DD-MMM-YY 格式 rar a -agDD-MMM-YY backup 3) 使用 YYYYMMDDHHMM 格式,替换'backup'之前的日期 rar a -ag+YYYYMMDDHHMM backup 4) 使用 YYYY-WW-A 格式,包含区段描述 rar a -agYYYY{year}-WW{week}-A{wday} backup 5) 使用 YYYYMMDD 和压缩文件数。它允许你在同一天使用 -agyymmdd-nn 数次,每一个新的压缩文件名都将包含一个新的递增数字。 rar a -agYYYYMMDD-NN backup -ao 添加带有存档属性的文件 (只有 Windows 版本可用). 例子: 添加C:上所有带有存档属性的文件到'f:backup',并清除文件存档属性 rar a -r -ac -ao f:backup c:\*.* -ai 忽略文件属性。 当解压时实用此开关,RAR 不对解压的文件设置存储在压缩文件中的常 规文件属性。此开关保留由操作系统赋予新创建文件的属性。 在 Windows 中它影响存档、系统、隐藏和只读属性。在 Unix 中,用 户、组和其它文件属性。 -ap 压缩文件内部设置路径。当添加文件到压缩文件中时,路径被整合到文 件名中,解压时从文件名删除。 例如,如果你希望添加文件'readme.txt'到目录压缩文件'release' 的'DOCS\ENG'中,你可以运行: rar a -apDOCS\ENG release readme.txt 或者解压'ENG'到当前目录中: rar x -apDOCS release DOCS\ENG\*.* -as 同步压缩文件内容 如果压缩时使用这个开关,这些在当前被添加文件列表中不存在的被压缩 文件将从压缩文件中删除。它对于使用这个开关和 -u(更新)组合同步一 个压缩文件和正在压缩目录的内容很便利。 例如,执行这个命令后: rar a -u -as backup sources\*.cpp 压缩文件'backup.rar'将只包含目录'sources'中的*.cpp文件,所有其它 文件将被从压缩文件中删除。它和创建新的压缩文件很相像,但是有一个 重要的不同:如果最近备份之后没有文件被修改,这个操作比创建新的压 缩文件执行得快。 -av 添加身份校验(只有注册版本可用)。RAR将在每次新建或更新压缩文件时 添加关于创建者的信息、最后更新时间和压缩文件名。 如果一个包含身份校验的压缩文件被修改,而没有指定这个开关,则身份 校验信息将被删除。 使用'-av'开关的压缩文件当解压、测试、列表或更新时,RAR 将进行完 整性确认并显示信息: 校验身份信息... 在成功校验身份的情况下,显示消息'确定',创建者的名字和最近更新 信息会被显示。在身份校验失败的情况下,将显示'失败'。 RAR 身份验证可以被伪造,不能提供基于公钥的现代数字签名方案同等的 安全级别。我们推荐实用此 RAR 功能仅作为信息,像一个特殊的压缩文 件注释。当关于压缩文件的创建者创建信息特别重要时,不要使用它。 为了启用身份校验功能,程序必须注册。请联系你当地的发布点或网站发 布中心。 -av- 禁止检查或添加身份校验。 -cfg- 忽略配置文件和 RAR 环境变量。 -cl 转换文件名成小写字母。 -cu 转换文件名成大写字母。 -c- 禁止显示注释。 -df 压缩后删除文件 移动文件到压缩文件中。这个开关与命令'A'组合执行和命令'M'是同一动 作。 -dh 打开共享文件 允许处理有其它应用程序打开写的文件。 如果应用程序允许对文件的读取访问,这个开关有效。但是如果文件的访 问类型是私有,文件打开操作仍然会失败。 这个选项很危险,因为它允许压缩一个文件,而同时正被其它应用程序修 改,所以小心使用。 -dr 删除文件到回收站 压缩后删除文件并把它们放到回收站中。仅可用于 Windows 版本。 -ds 添加到一个固实压缩文件时不排序。 -dw 档案操作后清除文件 压缩后清除文件。在删除文件数据前使用 0 字节文件覆盖它们, 防止恢 复删除的文件。 -ed 不添加空目录 这个开关指出空目录不被存储到被创建的压缩文件中。当解压这样一个压 缩文件时, RAR 会基于他们内部的文件路径创建非空的目录。关于空目录 的信息丢失。非空目录除了名字外(访问权限, 流, 等。)其他所有属性全 部丢失, 所以只有在你不需要保留这样的信息时使用此开关。 如果 -ed 和 'm' 命令或 -df 开关一起被使用,RAR 将不能移除空的目录。 -ee 不处理扩展属性 禁止保存和修复扩展文件属性。只用于OS/2版本。 -en 不添加"压缩文件结束"块 默认情况下,RAR 在新建或更新压缩文件时在结束时添加 "压缩文件结 束"块。它允许跳过像数字安全签名等扩展数据,但是在一些特定条件下 禁用这些功能可能有用。例如,如果在一个压缩文件通过不可靠的连接在 两个系统之间传递,并且同时发送者在它里面添加新文件时,它可能对确 认在传输过程中已经接收的部分不会被另一端所修改很重要。 这个开关不能用在分卷上,因为压缩文件结束块包含正确处理卷的重要信 息。 -ep 从名称中排除路径。包含此开关时,文件在加入压缩文件时不会包含路 径信息。这可能会有在压缩文件中存在数个相同名称的结果。 -ep1 从文件名中删除底层目录。不存储在命令行中输入的路径。 例子: tmp 目录中的所有文件和目录都将被添加到压缩文件'test'中,但是被压 缩文件名路径不包含'tmp\' rar a -ep1 -r test tmp\* 这等价于下列命令: cd tmp rar a -r ..\test cd .. -ep2 扩展路径成完全路径。压缩时存储文件的完全路径(除了盘符和根目录路 径). -ep3 扩展路径为包含盘符的完全路径。 仅用于 Win32 版本。 压缩时如果使用此开关则保存和恢复包括盘符的完全的文件路径。磁盘分 隔符(冒号)被下划线字符替换。 如果你解压时使用 -ep3,它把下划线改回为冒号并且把文件解压到它们 原始的目录和磁盘中。如果用户也指定了目标路径,它会被忽略。 此开关对于把数个磁盘备份到同一个压缩文件有帮助。例如,你可以运行: rar a -ep3 -r backup.rar c:\ d:\ e:\ 来创建备份并且: rar x -ep3 backup.rar 来恢复它。 小心使用 -ep3 开关,只有你确认压缩文件不包含任何恶意文件。换句话 说,如果是你自己创建的压缩文件或你完全相信它的作者才使用它。此开 关允许覆盖在你的计算机上任何地方的任何文件,包括重要的系统文件和 通常仅用于备份和恢复的目的。 -e[+]<属性> 指定排除或包含掩码属性文件。 <属性> 是十进位,八进位(以 '0' 开头)或十六进位 (以 '0x' 开头) 的数字格式。 默认, 在 <属性>没有‘+’标记, 此开关定义排除掩码。如果对 <属性> 和文件属性按位进行 AND 逻辑运算的结果不为 0,则文件将不会被处理。 如果‘+’符号存在,它指定包含掩码。只有具有在掩码中指定的属性中 的至少一种的文件会被处理。 在 Windows 版本中也可以使用D、S、H、A代替数字掩码符号表示目录和 文件的系统,隐藏,存档和只读属性。给出的属性的顺序并不重要。 Unix 版本支持 D 和 V 符号来定义目录和设备属性。 允许在命令行中把 -e<atr> 和 -e+<atr> 都指定。 示例: 1) 仅有文件夹名字而不包含它们的内容 rar a -r -e+d dirs 2) 不压缩系统和隐藏属性的文件: rar a -esh files -f 更新文件。可以在解压或创建压缩文件时使用。命令字符串"a -f"等价于 命令'f',你也可以和命令'm'或'mf'一起使用'-f' 。如果开关'-f'和命 令'x'或'e'一起使用,则只有旧文件能被从压缩文件中解压的新版本替换。 3) 不解压只读文件: rar x -er files -hp[p] 加密文件数据和头。 这个开关和 -p[p] 类似,但是开关 -p 只加密文件数据,而使文件名等 其它信息可见。这个开关加密所有包括文件数据、文件名、大小、属性、 注释和其它块等所有可感知压缩文件区域,所以它提供了更高的安全等 级。在压缩文件中使用-hp 加密,没有密码甚至不可能查看文件列表。 例子: rar a -hpfGzq5yKw secret report.txt 将添加文件 report.txt 到加密的压缩文件secret.rar中,使用密码 'fGzq5yKw' -id[c,d,p,q] 禁用消息。 开关 -idc 禁用版权字符串。 开关 -idd 在操作结束禁止显示“完成”字符串。 开关 -idp 禁止百分比指示。 开关 -idq 打开安静模式, 仅错误消息和问题能被显示。 允许一次使用数个修饰, 如果开关 -idcdp 是正确的。 -ieml[.][地址] 使用 E-mail发送压缩文件。只有 Win32 版本可用。 附加一个使用添加命令创建或被更新的压缩文件到 E-mail 信息中。你需 要有 MAPI 兼容的E-mail客户端来使用这个开关(大部分现代的 E-mail 程序支持MAPI接口)。 你可以在开关中直接输入详细E-mail地址或留为空白。在以后可以由你的 E-mail 程序询问。可以指定用分号或逗号隔开的数个地址。 如果你添加一个'.'字母到 -ieml,成功附加到E-mail中后压缩文件会被 删除。如果创建多卷压缩文件使用这个开关,每一卷都附加单独的 E-mail 信息。 -ierr 发送所有消息到标准错误设备。 -ilog[文件名] 记录错误到文件中 (只有注册版本可用). 把错误信息写到 RAR 目录中的 rar.log 文件中。也可以在开关中指定其 它的日志文件名代替默认的 rar.log,例如,-ilogc:\log\backup.log。 如果指定的文件名不包含路径,日志文件将会使用下列默认创建: 把错误信息写到 RAR 目录中的 rar.log 文件中。如果选项 "名称" 参数 没有指定, 日志文件将会使用下列默认创建: Unix: .rarlog 放在用户的 home 目录中; Windows: rar.log 放在 %APPDATA%\WinRAR 目录中; Dos: rar.log 放在 rar32.exe 文件相同的目录中。 如果 "名称" 参数包含无路径的文件名, RAR 会在默认目录中使用上面指 定的名称创建日志文件.如果你想改变日志文件的位置, 需要在 "名称"参 数中包含路径和文件名。 例如: rar a -ilogc:\log\backup.log backup d:\docs 发生错误时会创建 c:\log\backup.log 日志文件。 -inul 禁止所有消息。 -ioff 在完成操作后关闭计算机。硬件必须支持断电功能。只有 Win32 版本可用。 -isnd 允许声音。 -k 锁定压缩文件. 任何试图改变压缩文件的命令都会被忽略。 -kb 保留损坏的解压文件。 RAR 默认解压后删除 CRC 错误的文件。开关 -kb 指定 CRC 错误的文件 不会被删除。 -m<n> 设置压缩模式: -m0 存储 添加到压缩文件时不压缩文件。 -m1 最快 使用最快方式(低压缩) -m2 较快 使用快速压缩方式 -m3 标准 使用标准(默认)压缩方式 -m4 较好 使用较好压缩方式(较好压缩,但是慢) -m5 最好 使用最大压缩方式(最好的压缩,但是最慢) 如果没有指定这个开关,RAR使用-m3方式(标准压缩)。 默认情况下,RAR 在 -m1 和 -m2 模式中只使用常规压缩算法,高级算法 像声音和真彩处理只有在 -m3..-m5 模式下才启用,提升的文本压缩只有 在 -m4..-m5 中才被激活。默认值可以使用 -mc 开关替代。 -mc<参数> 设置高级压缩参数。 这个开关主要是用于进行测试和试验,在真实环境中通常最好允许 RAR 自动选择最佳参数。请注意,不适当的使用这些开关可能导致非常严重执 行和压缩损失,所以只有在你清楚理解你所要做的时候使用它。 它有下列语法: -mc[参数1][:参数2][模块][+ 或 -] <模块>的位置是指示压缩算法的一个字符,它必须被设置。 它有下列值: A - 声音压缩; C - 真彩色(RGB)数据压缩; D - 增值压缩; E - 32-位 x86 Intel 可执行文件压缩; I - 64-位 Intel Itanium 可执行文件压缩; T - 文本压缩。 在开关结尾的'+'标记应用选择的算法模块处理所有的数据,'-'完全禁用 该模块。如果没有指定标记,RAR 将基于数据和当前的压缩模式自动选择 模块。 开关 -mc- 禁止所有可选模块,只允许常规的压缩算法。 <参数1> 和 <参数2> 根据模块而决定的参数,其描述如下。 音频压缩,增值压缩: <参数1> 是通道的字节数 (可以是1 - 31)。RAR 拆分多位声道成单位声 道,例如,两个16位音频声道可以被 RAR 看作每个宽一字节的四个声道。 <参数2> 被忽略。 32位 x86 Intel 可执行文件压缩, 64位 Intel Itanium 可执行文件压缩, 真彩(RGB)数据压缩: <参数1> 和 <参数2> 被忽略。 文本压缩: <参数1> 是 PPM 算法的次序+(可以是 2 - 63)。通常高的值会略微提高 多余数据的压缩率,但是必须有足够的内存来用于 PPM。在缺乏内存的条 件下结果可能相反。更高的规则值会减慢压缩和解压的速度。 <参数2>对于 PPM 可用的以兆字节位单位的内存 (1-128)。更高的值可以 提高压缩率,但是注意PPM压缩和解压使用的内存大小相等,所以创建一 个压缩文件时如果分配太多的内存,其他人在安装了比较少内存的机器上 解压它时可能出现问题。解压缩也可以使用虚拟内存,但是可能变得非常 慢。 例子: 1) 开关 -mc1a+ 强制使用对所有数据使用8位单声道声音压缩算法。 2) 开关 -mc10:40t+ 强制使用对所有数据使用文本压缩优化算法,设置压 缩次序到 10 并分配40 MB内存。 3) 开关 -mc12t 设置压缩次序到 12,设置文本压缩顺序为12,当使用文 本压缩时,让RAR决定何时使用它。 4) 开关 -mct- -mcd- 禁止文本和增值压缩。 -md<n> 以<n>KB大小选择字典大小。必须是64,128,256,512,1024,2048或4096或 单个字母 'a','b','c','d','e','f','g'。 这个可变大小的字典是被压缩算法使用的专用的内存区域。如果被压缩文 件的大小(或在一个固实压缩文件中的总文件大小)比压缩文件大许多,则 通常增加字典大小会增加压缩率,减慢压缩速度和增加内存需要。 如果字典比原数据大,RAR可以减少字典大小.它可以减少内存的需要而不 会减小压缩比。 默认可变字典大小是 4096 KB. 例子: RAR a -s -mdd sources *.asm 或者 RAR a -s -md512 sources *.asm 将使用512 KB字典创建固实压缩文件。 -ms[列表] 指定存储文件类型。 指定不压缩而直接存贮的文件类型。这个开关被用来存储已经压缩的文件, 这将帮助增加压缩速度,而不会显著的减小压缩率。 可选参数 <列表> 参数定义使用分号隔开的文件扩展名列表。例如, -msrar;zip;jpg 将强制RAR不压缩直接存储所有的RAR和ZIP压缩文件和 JPG 图像。它也允许在列表中指定通配符文件掩码,所以 -ms*.rar; *.zip;*.jpg 也可以工作。 如果 <列表> 没有被指定,-ms 开关将使用默认的包含下列文件类型的扩 展设置: 7z, ace, arj, bz2, cab, gz, jpeg, jpg, lha, lzh, mp3, rar, taz, tgz, z, zip -mt<线程> 设置线程数。仅可用于 Window 版本。 <线程> 参数可以是从 0 到 16 的值。它定义对于压缩算法活动线程的 推荐数。如果它大于 0,RAR 会使用多线程版本的压缩算法,在多处理 器系统上提供更高的速度。真实的活动线程数可能和指定的不同。 如果 <线程> 是 0,RAR 会使用单线程压缩算法。 改变 <线程> 参数轻微影响压缩率,所以如果所有其它压缩参数相等而 使用不同的 -mt 开关创建的压缩文件不会解压得一样连贯。 如果没有指定 -mt 开关,RAR 会尝试检测可用的处理器的数量并自动 选择优化的线程数。 -n<文件> 仅包含指定的文件 <文件>。通配符在文件掩码的名称和文件部分都可用。 你可以数次指定开关‘-n’。 此关不能替换通常的文件掩码,仍然需要在命令行中输入。它是一个附加 的过滤器限制处理的文件那些仅匹配在 –n 开关中指定掩码的文件。某些 时候它可以帮助减少命令行的长度。 例如,如果你需要压缩在 Project 和 Info 文件夹内的所有的 *.txt 和 *.lst 文件,你可以输入: rar a -r text Project\*.txt Project\*.lst Info\*.txt Info\*.lst 或使用开关 -n: rar a -r -n*.txt -n*.lst text Project Info -n@<列表文件> 包含在指定的列表文件中列出的文件。 和 -n<文件> 开关类似,但是从列表文件读取掩码。 示例: rar a -r -n@inclist.txt text Project Info -oc 设置 NTFS 压缩属性。只可用于 Win32 版本。 此开关允许解压文件时恢复 NTFS 压缩属性。RAR 在创建一个压缩文件时 保存“压缩”文件属性,但是如果不指定 -oc 开关就不会恢复它们。 -ol 把符号链接作为链接而不是文件。 只有 Unix 版本可用。 -or 如果相同名字的文件已经存在则自动重命名解压的文件。重命名文件将得 到象 'filename(N).txt' 的名字,'filename.txt' 的位置是原始的文件 名,如果文件存在 'N' 是从 1 增加数字。 -os 保存 NTFS 流。 只有 Win32 版本可用。 这个开关意味着只能在 NTFS 文件系统下使用,并允许储存与文件相关的 交替数据流。在 Windows 2000、XP 和更新的 Windows 版本底下尤其重要, 可以用来保存某些文件依赖信息,如文件描述。如果您使用 RAR 来备份您 的 NTFS 磁盘时,建议您指定这个开关。 -ow 当压缩时保存文件安全信息和解压时恢复它们时,使用这个开关。 Unix 版本的 RAR 当使用这个开关时保存文件所有者和组。 Win32 版本存储所有者、组、文件许可和校验信息,但是你必须有读取 它们的必需的权限。 注意只有 NTFS 文件系统支持在Windows下的文件基 本安全数据。 -o[+|-] 设置覆盖模式。可以在解压或更新文件时使用。下列模式可用: -o 覆盖前询问 (默认用于解压文件); -o+ 覆盖所有 (默认用于更新的压缩文件); -o- 跳过已存在的文件。 -o+ 覆盖已存在的文件。 -o- 不覆盖已存在的文件。 -p[p] 压缩时,使用字符串<p>作为密码加密文件。密码大小写敏感。如果你在 命令行忽略密码,你会看到一个输入密码的提示。 例子: rar a -pmyhoney secret1 *.txt 添加 *.txt文件并用密码"myhoney"加密. -p- 不询问密码 -r 包含子文件夹,可以使用命令: a,u,f,m,x,e,t,p,v,l,c,cf 和 s. 当使用命令 'a','u','f','m' 将处理在所有子目录中以及当前工作目 录的中的文件。 当使用命令 x,e,t,p,v,l,c,cf 或 s 将处理在子目录以及当前工 作目录中所有压缩文件。 -r- 禁用递归。 在某些情况下,即使没有指定 -r 开关 RAR 也会自动启用递归。开关 -r- 禁止它。 压缩时如果你指定了目录名,目录名不包含通配符,即使 -r 开关没有指定, 默认 RAR 添加目录的内容。如果磁盘根目录没有把通配符作为文件掩码指定, RAR 也会自动启用递归。开关 -r- 禁用此行为。 例子: rar a -r- arc dirname 命令仅会添加空目录 'dirname' 目录并忽略它的内容。下列命令: rar a -r- arc c:\ 会仅压缩 c: 根目录的内容并不会包含子目录。 -r0 和 -r 相似,但是当使用命令 'a','u','f','m' ,将返回包含包括通 配符 '*' 和 '?'的子目录 -ri<p>[:<s>] 设置优先级和休眠时间。只有在 Windows 版本的 RAR 中可用。 这个开关让 RAR 在多任务环境下时,用来控制系统载入负荷。可用任务 优先级值从 0 到 15。当 <p> 等于 0 时,使用默认任务优先级。1 对应 最低的任务优先权,15 - 最高。 休眠时间 <s> 是从 0 到 1000 (千分之一秒)的值。这是 RAR 压缩或解 压缩操作期间每次读或写时将会归还到系统的时段。休眠时间设定在几个 相同优先级任务在系统中同时运行时有用。 例子: 使用默认优先级执行 RAR,并且每次读取或写入后有10 ms的休眠 rar a -r -sfx -ri0:10 backup *.* -rr[N] 添加数据恢复记录。这个开关在创建或修改压缩文件被用来添加压缩文件 数据的恢复记录。 -rv[N] 创建恢复卷。这个开关在创建多卷压缩文件时用来创建恢复卷。查看 'rv[N]'命令的详细描述。 -s 创建固实压缩文件。固实格式是一种特别的压缩文件类型。请参考附录中的 “术语表”获得更多信息。 例子: 使用512KB的字典创建固实压缩文件 sources.rar ,包含全部子目录,从 当前目录开始,只添加.asm文件: rar a -s -md512 sources.rar *.asm -r -s<N> 根据文件计数创建固实组 和 -s 相似,但是在压缩<N>文件后重置压缩文件的状态。通常减少压缩率, 但是也能减少损坏的固实压缩文件中的文件丢失。 -sc<字符集>[对象] 指定列表文件和压缩包注释文件的字符集。 “字符集”参数是强制的, 可以使用下列值: U - Unicode; A - ANSI (Windows) 编码。仅用于 Windows 版本; O - OEM (DOS) 编码。仅用于 Windows 版本; Unicode 格式的文件必须以 FFFE 或 FEFF Unicode 字符开头, 否则 RAR 会 忽略此开关并作为 ASCII 文本处理。 “对象”参数是可选的, 可以使用下列值: L - 列表文件; C - 命令文件。 它允许指定不只一个对象, 例如, -scolc。如果 '对象' 参数丢失, '字符 集' 会应用到所有对象。 此开关允许指定在 -z[文件] 开关中的文件的字符集, 列表文件和注释文 件在 "cw" 命令中写入。l 例子: 1) rar a -scol data @list 使用 OEM 编码读取 'list' 中包含的名称。 2) rar c -scuc -zcomment.txt data 读取 comment.txt 为 Unicode 文件。 3) rar cw -scuc data comment.txt 写入 comment.txt 为 Unicode 文件。 -se 根据扩展名创建固实组 和 -s 相似,但是如果文件扩展名改变,重置压缩文件的状态。通常减少压 缩率,但是也能减少损坏的固实压缩文件中的文件丢失。 -sfx[名称] 创建自解压压缩文件。如果建立新压缩文件时使用此开关,自解压文件(使 用 default.sfx 模块或在开关中指定)将被创建。在 Windows 版本中, default.sfx 应该在 rar.exe 所在的目录中,在 Unix 中 - 在用户的 home 目录中。在/usr/lib 或 /usr/local/lib 中。 例子: rar a -sfxwincon.sfx myinst 使用 wincon.sfx 自解压模块创建自解压(SFX)压缩文件。 -si[名称] 当创建一个压缩文件时,从 stdin(标准输入)读取数据。选项“名称”参 数允许指定要创建的压缩文件内的标准输入数据的文件名。如果这个参数 丢失,名字会被设为“stdin”。此开关不能和 -v 一起使用。 例子: type Tree.Far | rar a -siTree.Far tree.rar 将把 'type Tree.Far' 作为 'Tree.Far' 文件压缩输出. -sv 创建互不依赖的固实压缩文件 当开始一个新的卷时,RAR 默认尽可能的尝试重置固实格式状态,但是只有 在上一次复位后,又压缩了足够多的数据。(至少几兆字节)。 这个开关会强制 RAR 忽略打包的数据大小,并试图对任何大小的分卷重置 状态。这会降低压缩率,但在固实卷组中的数个卷之一丢失或损坏时可以 增加解压部分数据的机会。 注意有时候 RAR 即使使用这个开关也无法重置状态。例如,当压缩一个 大文件成许多分割卷时就不能完成。RAR 只能在分离文件之间重置状态, 而不能用在单独文件上。 在创建不带卷的压缩文件时忽略。 -sl<大小> 仅处理大小小于在此开关的 <大小> 参数中指定的大小的文件。 参数 <大小> 必须以字节为单位指定。 -sm<大小> 仅处理大小超过在此开关的 <大小> 参数中指定的大小的文件。 参数 <大小> 必须以字节为单位指定。 -sv- 创建互相依赖的固实压缩文件 禁止卷之间重设固实状态。 这将稍微提高压缩率,但是意味着如果数个固实卷之一丢失或损坏时减 少解压部分数据的机会。 在创建不带卷的压缩文件时忽略。 -s- 禁止固实压缩 -t 压缩后测试文件。这个开关在和移动命令组合使用时非常有用,所以只有 压缩文件已经被成功测试后,文件才会被删除。 -ta<日期> 只处理指定日期之后修改的文件。 日期字符串的格式是 YYYYMMDDHHMMSS。它允许在日期字符串中插入'-' 或 ':'的分隔符,并忽略后部区域。例如,下列开关是正确的: -ta2001-11-20在内部它被转换成 -ta20011120000000 并作为"从2001 年11月20日0时0分0秒后修改的区域"对待。 -tb<日期> 只处理指定日期之前修改的文件。开关的格式和 -ta<日期> 相同。 -tk 保存原始压缩文件日期。防止当正在改变一个压缩文件时RAR修改文件。 -tl 设置压缩文件的日期为最新文件的日期。强制RAR设置改变的压缩文件的日 期为压缩文件中最新文件的日期。 -tn<时间> 处理指定时间以后的新文件。时间字符串格式时: [<ndays>d][<nhours>h][<nminutes>m][<nseconds>s] 例如,使用开关 -tn15d 来处理更新了15天的文件,-tn2h30m 来处理更 新了2小时30分的文件。 -to<时间> 处理指定时间以前的旧文件。开关的格式和 -tn<时间> 相同。 -ts<m,c,a>[N] 保存或恢复文件时间(修改,创建,访问)。 开关 -tsm 指示 RAR 保存文件的修改时间,-tsc - 创建时间,tsa - 最 近访问时间。开关后的可选参数是 0 和 4 之间的数字来控制文件时间精 度。值‘1’启用 1 秒的精确度,2 - 0.0065536 秒, 3 - 0.0000256,4 或‘+’启用最大的 NTFS 时间精度,等于 0.0000001 秒。值‘0’或‘-’ 意味着创建和访问时间不保存,并且修改时间使用低的(两秒)时间精度。 更高的精度模式添加更多的数据到压缩文件中,使用 -tsm4 -tsa4 -tsc4 组合,让每个文件增加 19 个额外的字节。如果没有指定精度,RAR 使用 ‘4’(高)值。 默认的 RAR 模式是 -tsm4 -tsc0 -tsa0,所以高精度的修改时间被存储, 其它时间被忽略。 当解压文件(精度不相关,但是不能为 0)时指定 -tsc 和 -tsa 开关来设置 创建和访问时间是必需的。默认 RAR 只设置修改时间,即使压缩文件包含 创建和最近修改时间。设置修改时间来解压文件也可以使用 -tsm- 禁用。 如果你需要把这个开关应用到所有的三个时间,也可能忽略这三个类型字母。 例如,-tsm4 -tsa4 -tsc4 能被 -ts4, -ts+ 或 -ts 代替。使用 -ts- 来 只保存低精度的修改时间,或者忽略所有三个文件时间解压。 当创建一个压缩文件时,如果高的模式不被文件系统支持,RAR 会自动减少 精度。在 FAT 中不会超过两秒,在 Unix 中不会超过 1 秒。NTFS 时间精 度是 0.0000001 秒。 操作系统的时间限制解压时能被设置。Windows 允许设置三个时间,Unix - 修改时间和最近访问时间,没有创建时间,DOS 只支持修改时间。 例子: 1) rar a -ts backup 使用最高精确度存储所有文件时间。 2) rar x -tsa backup 存储修改和最近访问时间。开关 -tsm 不是必需的,因为 RAR 把它作为默 认值。 3) rar a -tsm1 -tsc1 backup 存储低精确度的修改和创建时间。没有 -tsm1 RAR 将会保存高精确的修改 时间。 -u 更新文件。 这可在解压或创建压缩文件时使用。命令字符串 'a -u' 和 命令 'u'等效。您也可以使用开关'-u'和命令'm'和'mf'一起使用。如果开 关'-u'使用与命令'x'或'e'一起使用,则在磁盘上不存在的文件和比在磁 盘上的拷贝新的文件将从压缩文件中解压。 -v 创建自动检测大小的卷或列出所有的卷 当正在创建或正在列表卷时这个开关可以使用。 在第一种情况下,它启用卷的自动大小检测,所以新的卷将使用目标媒体 上的所有可用空间。当在可移动磁盘上创建卷时非常便利。你可以在 -v <大小> 的描述中读到更多关于卷的信息。 在第二种情况下,在命令行中当这个开关和'V' 或 'L'命令一起使用,它 强制 RAR 列出从指定卷开始的所有卷的内容。没有这个开关,RAR 只显 示单独的被指定卷的内容。 -v<大小>[k|b|f|m|M|g|G] 建立卷,大小=<大小>*1000 [*1024 | *1]。 默认此开关使用 <大小> 作为一千(1000)字节(非1024 字节)。您也可以 输入符号 "k" 来表示千字节(1024)的大小,或者符号 "b" 表示字节,兆 字节(1024 x 1024)为 -"m",而一百万个字节是 - "M",G字节 - 'g', 十亿个字节 - 'G' 或者使用符号 "f" 从几个预先定义的数值中选择一个。 预先定义的数值有 360、720、1200、1440 或 2880 并会使用当前软盘大 小取代。 如果大小被忽略,将使用自动检测。 你可以指定几个 -v 开关来为不同的卷设置不同的大小。例如: rar a -v100k -v200k -v300k arcname 第一卷设为 100 KB 大小, 第二卷设为 200 KB, 剩下的为 300 KB。 如果在可移动磁盘上创建卷,第一卷被创建后,用户将被提示: 创建下一卷: 是/否/全部 此时,您可以改变磁盘。回答'A'将使所有的卷不暂停地被创建。 默认 RAR 卷以'volname.partNNN.rar'格式命名,NNN的地方是卷号。使 用-vn开关可能转换成其它的扩展基本命名规则,卷组中第一卷文件由.rar 的扩展名,以后卷从 .r00 到 .r99 命名。 当解压或测试多卷压缩文件时,你必须只使用第一卷的文件名。如果在驱 动器中没有下一卷并且磁盘可移动,用户会被提示: 插入磁盘带有 <下一卷名> 插入带有正确卷的磁盘并按任意键。 如果在解压过程中,下一卷没有找到或卷放在不可移动磁盘上,RAR 将显 示下列信息后中断: 没有找到 <卷名> 压缩卷不可以被修改。命令'd','f','u','s' 不能在多卷组中使用。 命令'a'只可以用在创建新的多卷序列时。 也许,虽然不太可能,多卷组中文件大小可能比未压缩时大,原因是'存 储'特征(如果大小增加时不压缩)在多卷组中不能启用。 压缩卷可以是自解压格式,这样的压缩文件可使用 '-v' 或 '-sfx'开关 创建。 例子: 创建固定大小的固实分卷压缩文件: rar a -s -v1440 floparch.rar *.* 将创建固实的1440000字节大小的卷。 -vd 创建卷之前清除磁盘内容 当使用 '-vd' 时,目标盘上的所有文件和目录都将被删除。这个开关只 能用在可移动磁盘上,使用这个开关不能删除硬盘内容。 -ver[n] 文件版本控制 当在已经存在的压缩文件中更新文件时,强制 RAR 保留前一文件版本。 旧版本被命名为'filename;n','n'处是版本号。 当不使用开关 -ver 解压一个压缩文件,rar 默认只解压最近添加的文件 版本,它的名字不能包含数字后缀。但是如果你正确指定了文件名,包括 版本,它也可以解压。例如,'rar x arcname'将只解压最新版本,当使 用 'rar x arcname file.txt;5' 将解压 'file.txt;5',如果它在压缩 文件中存在的话。 解压时如果你不带参数指定-ver开关, RAR 将解压所有和文件掩码匹配的所有文件中的所有版本。这样版本号没 有从未压缩文件名中删除。你也可以使用数字作为-ver的参数来解压一个 具体的文件版本。它将告诉RAR只解压这个版本并从文件名中删除版本号。 例如,'rar x -ver5 arcname' 将只解压第五版本文件。 如果压缩时你指定了‘n’参数,它会限制在压缩文件中文件版本的最大 数字。超过此限制的旧的文件版本会被移除。 -vn 使用旧风格的卷命名法则 默认 RAR 卷以'volname.partNNN.rar'格式命名,NNN的地方是卷号。使 用-vn开关可能转换成其它的扩展基本命名规则,卷组中第一卷文件由 .rar 的扩展名,以后卷从 .r00 到 .r99 命名。它可能有用,如果你要 在 MS DOS下解压一个压缩文件时,不允许在文件名中超过一个点'.'。 -vp 每一卷后暂停 默认 RAR 仅在使用可移动驱动器创建或解压下一卷前,进行更换磁盘的 询问。这个开关将强制 RAR 总是进行这样的询问。如果磁盘空间有限而 且你希望创建后立即复制每一卷到其它磁盘中时,可以使用它。 -w<p> 把<p>作为工作目录。这个开关可以用来分配临时文件工作目录。 -x<f> 排除指定的文件 <f>,通配符可以用在名称和文件掩码的文件部分。你 可以数次指定开关'-x'。 如果掩码包含通配符,它应用到当前目录和它的子目录。没有通配符它不 递归,所以如果你要在所有文件夹中排除某些“文件名”,你需要指定两 个掩码:用于当前目录的“文件名”和用于子目录的“*\filename”。如果 你知道一个文件的确切路径,你可以是使用“路径\文件名”语法来仅排除 “文件名”的此副本。如果你在解压一个压缩文件时使用 -x路径\文件名 语法,“路径”必须是一个压缩文件内的路径,而不是在解压后的磁盘上 的文件路径。 例子: 1) rar a -r -x*.bak -x*.rar rawfiles *.bak 和 *.rar 不会添加到 rawfiles 中 2) rar a -r -x*\temp -x*\temp\* savec c:\* 压缩 C: 上除了 Temp 文件夹中的临时目录和文件外的所有文件 3) rar x -x*.txt docs 从 docs.rar 解压除了 *.txt 外的所有文件 -x@<lf> 排除指定文件列表中列出的文件。如果你使用 -x@ 而没有列表文件名参数, 它会从标准输入设备读取文件名。 例子: rar a -x@exlist.txt arch *.exe -y 对于所有询问全部回答是。 -z[f] 从文件<f>中读取压缩文件注释。如果你需要指定注释文本文件的字符 集使用 -sc 开关。如果 <f> 没有指定, 注释从标准输入设备读取。 限制 ~~~~ 路径名长度小于 259 个字符。 最大的压缩文件注释的长度是 62000 字节。 命令限制: 命令 'd','u','f','c','cf' 不能用于分卷压缩文件。 命令 'a' 不能用来更新分卷压缩文件,只能用来创建一个新的。 返回值 ~~~~~~ RAR 成功操作后返回 0 。非 0 返回码意味着操作由于某种错误被取消: 255 用户中断 用户中断操作 9 创建错误 创建文件错误 8 内存错误 没有足够的内存进行操作 7 用户错误 命令行选项错误 6 打开错误 打开文件错误 5 写错误 写入磁盘错误 4 被锁定压缩文件 试图修改先前使用 'k' 命令锁定的压缩文件 3 CRC 错误 解压缩时发生一个 CRC 错误 2 致命错误 发生一个致命错误 1 警告 没有发生致命错误 0 成功 操作成功 术语表 ~~~~~~ 压缩文件 包含一个或一个以上文件的压缩和/或加密的特定文件。 压缩 减少数据大小的编码方法。 CRC 循环冗余检查。为了验证数据正确性检查特定信息的数学计算方法。 SFX 压缩文件模块执行时用于解压文件(自解压文件模块),通常是一个 .EXE格式文件。 固实 对压缩文件使用专用的压缩方式(把所有文件看成一个连续的数据 流)打包。当压缩大量小文件特别有利。 卷 压缩文件的拆分部分。把一个压缩文件拆分成存储在磁盘上。固实 格式卷解压时必须从序列中的第一个开始。 版权所有 (c) 1993-2009 Alexander Roshal
在基于Windows 2000网络中,活动目录(Active Directory)是它的核心。活动目录是一个分布式的目录服务。网络信息可以分散在多台不同的计算机上,保证快速访问和容错;同时不管用户从何处访问或信息处在何处,对用户都提供统一的视图。可以这样说:没有活动目录,就没有Windows 2000。7 E9 e* I* K; J 8 F# j3 ^7 j$ j一、活动目录基础 6 z) K" V O6 _, k$ m$ F0 D(一)活动目录概览( X# G1 c6 B+ z* g$ f9 w! ]& I 1.什么是活动目录" D1 N0 ~3 _ J$ B0 p 8 m s, [* {) i) n6 f4 s 活动目录是Windows 2000网络中的目录服务。目录服务是一种网络服务,它存储关于网络资源的信息,并使用户或应用程序可以访问这些资源。活动目录使用同样的方法命名、描述、查找、访问、管理和保护这些资源的信息。/ h( T2 t7 ~5 X0 ^4 p - u- i! w* d# O4 d' Y* E( v(1)活动目录的功能: 6 Y4 }' M# y) {5 K. V3 m! R7 S; v 活动目录提供的服务功能,包括一种集中组织、管理和控制网络资源访问的方法。它使物理网络拓朴和协议透明化,这样网络上的用户可以访问任何资源,而不需要知道资源在什么地方,或物理上它是如何连接到网络上的。% t! G+ S" E# e9 q 2 \% m) N4 I- I* v4 f. t(2)集中式管理: * [. Y& e' Q6 @, z7 u& O$ X4 V0 m1 |4 n) K! a% Y 一个运行Windows 2000的服务器在活动目录中存储系统配置、用户简介和应用程序的信息。与组策略相结合,活动目录可以使管理者使用同样的管理界面管理分布式桌面、网络服务和来自中心位置的应用程序。活动目录同时提供对网络资源集中控制,允许用户只登录一次就可以访问整个活动目录的资源。/ [) F0 b& {- Z' Y : Q8 }* B' c% \$ Z# w0 q- x- @ 2.活动目录对象% i& Q! Q* t' M4 {7 }' n- K$ y * Z2 j) M0 E4 [) U* P, j. {活动目录存储网络对象的信息。活动目录对象代表网络资源。如用户、组、计算机和打印机。而且,网络中所有的服务器、域和站点都作为对象。因为活动目录代表了所有网络资源,只需要一个管理员就可以管理这些资源。+ e7 X" A; h1 H+ ?2 z8 p ) ~( _. I6 _% C( D' ?+ z3.轻型目录访问协议 + Y; _% K9 n+ K/ F i6 G/ _: x4 y# X% d 轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)是用于访问活动目录的协议。2 ?: L1 z$ `1 l1 g$ G r6 S 2 G/ r( M+ |) R) R" j" ^* [. [LDAP是用于查询和更新活动目录目录服务协议。LDAP协议规范表明,一个活动目录对象可以由一系列域组件、OU和普通名字来代表,它们组成了活动目录中的命名路径。LDAP命名的路径是用来访问活动目录对象的,它包括了下面的两类:% T* B4 E: k( {8 ^ 9 U& n1 d0 J; Q: q, w1 O. t+ k1 z (1)标识名(Distinguished Name): ; n! e# H# Q; X' J 7 k& D: |( n5 V! b+ v+ T d/ R在活动目录中每个对象都有一个标识名,标识名确定了对象所在的域和可以找到对象的完整路径。比如,典型的标识名包括: ) v( ^# h2 Q% P ) k( @' h3 e4 k* G+ s" i7 `CN=TOM,OU=Manager,DC=Tech,DC=COM$ s" t. g: e" ^6 q) _ . W, `* `$ G+ l& }7 O/ ^$ Z) G" R(^60090102a^) , ]4 n* g, \5 M2 B7 ?% y( N5 T& w7 s8 Y4 C (2)相对标识名(Relative Distinguished Name):$ Q4 y( i A" B! J2 f, } ) Q' A. Z% l8 F5 K LDAP相对标识名是LDAP标识名的一部分,它用来标识容器中的对象,它的组成随客户建立的现场搜索内容的大小而变化。搜索内容的范围可以是域组件,也可以是普通名字的对象。 1 N6 f7 Q+ p: _0 L: e0 n2 n5 o7 g1 y 下表中给出了标识名,客户建立的搜索内容和相对标识名的具体的例子。 ( `/ b$ c$ Q: f5 G1 h5 j6 t4 x' X! J& K/ L (^60090102b^) - o; a/ R( W" Q( H+ w7 W' e$ n# [' z7 S (二)活动目录结构 / R1 e, {5 F6 l7 `2 g1.活动目录的逻辑结构 ; {! I/ m% N1 x; b! v: i : g: W2 s% o% A6 {4 x0 B(1)域: ' }' }5 v" y7 @9 K! G _5 Q- _+ f( P0 ] 域(Doamin)是活动目录中逻辑结构的核心单元,一个域包含许多台计算机,它们由管理员设定,共用一个目录数据库。一个域有一个唯一的名字,给那些由域管理员集中管理的用户账号和组账号提供访问通道。 " t9 D5 }8 f9 S0 v/ d8 o- M V1 D2 k2 ~+ N6 [2 v7 C. _ 要创建域,用户必须将一个或更多的运行Windows 2000 Server的计算机升级为域控制器。每个域至少必须包含一个域控制器。$ p8 r1 I2 U0 K0 _3 s, @4 ~1 S ( d; ]% ]2 v0 V. k1 P0 ?# C(2)组织单元:" f, N4 i; A9 D1 h+ _ 1 p* g8 H, B, x$ p, h5 p& o 组织单元(Organizational Units,OU)是一个起组织作用的单位。它可将用户、组、计算机和其他单位放入其中的活动目录容器。组织单元不能包括来自其他域的对象。组织单元是可以指派组策略设置或委派管理权限的最小作用域或单位。使用组织单元,用户可在组织单元中代表逻辑层次结构的域中创建容器。这样用户就可以根据用户的组织模型管理账户和资源的配置和使用。 1 e+ }# `! n6 {& h9 ~6 T) \* O0 q 8 V0 D0 S) [( v5 \$ [% R(3)目录树和目录林:4 t+ Q+ o8 q7 X: }% K 0 K+ g; |# ^; h3 S% y1 B 活动目录中的每个域利用DNS(Domain Name Server,域名服务)域名加以标识,并且需要一个或多个域控制器。如果用户的网络需要一个以上的域,则用户可以创建多个域。共享相同的公用架构和全局目录的一个或多个域称为域林。如果树林中的多个域有连续的DNS域名,则该结构称为域树。如^60090102c^所示。 ' C, [0 _7 o0 Q0 w, S" v+ z( D* t7 N 如果相关域树共享相同的活动架构以及目录配置和复制信息,但不共享连续的DNS名称空间,则称之为域林。$ h, Z8 p5 k( h# f0 W - v# E$ N5 i/ @域树和域林的组合为用户提供了灵活的域命名选项。连续和非连续的DNS名称空间都可加入到用户的目录中。 $ b2 D1 h Z5 S& O# P/ A- n; [7 S 2 O" c5 Z' v+ z3 W# r5 `/ X. d(4)全局目录:. C- m/ F* a4 T5 e ' r! o0 C5 N1 @$ j/ Q% H0 V7 w$ r一个域的活动目录类似于一本书的目录,那么全局目录就好像是一系列书的总目录。在全局目录中包含一个已有活动目录对象属性的子集。默认情况下,存储在全局目录中的对象属性是那些经常用到的内容,而非全部属性。 - g' B e* Q1 b' N! @ 4 k9 H# a7 L4 C" C全局目录服务器是一个域控制器,活动目录建立的第一个域控制器自动成为全局目录服务器。全局目录就放在全局目录服务器上。 5 E4 E: a& _- c% ~1 X 4 Z z8 n. F8 D8 @1 `% A/ p% x4 s2.活动目录的物理结构& i* E3 v! U0 s+ ]5 ? , D* g0 V# `" `) g(1)域控制器: _1 {% O: y' ]+ W/ [ 8 c6 p0 N( J1 o域控制器就是存储活动目录的地方,一个域可以有一个或几个域控制器。在域中,各域控制器相互复制活动目录的改变,在目录林中,各域控制器相互之间也把信息自动复制给对方。 $ j D* X9 F, S$ @ X1 Q+ i. m2 x' M % H; [# e9 \& q- B# f. `(2)站点:+ G! K. R5 I* ~: k6 g1 B$ @4 Z- j' B ( y: ] o$ r9 C( \/ x5 b @: a站点(Site)是由一个或多个IP子网中的一组计算机,确保目录信息的有效交换,站点中的计算机需要很好地连接,尤其是子网内的计算机。站点和域名称空间之间没有必要的连接。站点反映网络的物理结构,而域通常反映用户单位的逻辑结构。逻辑结构和物理结构相互独立,所以网络的物理结构及其域结构之间没有必要的相关性,活动目录允许单个站点中有多个域,单个域中有多个站点。 2 p h5 x$ E8 O, \0 s( d" q+ l; n. t6 E0 z4 F/ R1 ?$ F 如果配置方案未组织成站点,则域和客户之间的信息交换可能非常混乱。站点能提高网络使用的效率。 ; K( `+ F8 I2 b4 t 7 q6 g1 \( i9 c1 B( S9 X( G二、安装活动目录* O! ~# |* Y1 x4 ]: E; X$ _4 ?. } (一)安装活动目录的要点 3 t; E1 N, f& V* e4 p3 S首先,也是最重要的一点,就是你必须有安装活动目录的管理员权限,否则无法安装。' E/ P8 R' x% B$ f( q7 h5 i 3 ^7 w8 h% q+ a) v" n$ D0 K; C在安装活动目录之前,要确保计算机满足基本系统要求:* Z& t: _9 N6 A1 c" C - B7 H( D6 e+ q- W9 x(1)计算机运行Windows 2000 Server版本,且系统盘是NTFS分区。0 O0 F/ N" {4 M2 A* V6 X$ g; f/ Z9 g & t' m4 Y7 \: g+ c* T3 A (2)用于活动目录数据库的最小磁盘空间为200MB,另外还要有50MB的空间用于活动目录数据库的日志文件。% N, l3 [) D1 u9 r- R" {: `( U6 K - S P; `* |# m( E* Q$ E& U2 u (3)已做好了DNS服务器的解析。1 C. \( h3 k) `6 q2 A1 @! P " v" N0 w: a& ~: e- I DNS(Domain Name Server, 域名服务器)是活动目录的基础,没有DNS就不会有活动目录。DNS也叫域名服务,它的作用是将某个域名与IP地址对应,从而将人易于理解的域名转达化为易于计算机寻址的IP地址。而如果活动目录中的资源对应的是LDAP标识,那么只需要DNS中有这个标识的定位记录就可以很方便地供用户查找资源,并寻址到相应的位置上。' u* [+ L2 m- \ j: h: L. r7 u 有关DNS服务器的配置,读者可以参考《电脑报2001年合订本》下册附录中《ⅡS 5.0网络建站完全手册》一文。 4 ^; U6 a4 c4 _+ F. @& i* y2 M 9 X, c" R4 J. `7 w: z(二)安装活动目录 3 |" ]' a: f6 V# D$ W运行活动目录安装向导将Windows 2000 Server升级为域控制器以创建一个新域,或者向现有的域添加其他域控制器。2 E5 K. u' s+ W: ?7 g7 L # u) H2 p, | f 1.安装域里的第一台域控制器 4 w9 {' z: n+ Q: ]3 Y 0 `) M, t8 y9 `- K在安装活动目录前首先确定DNS服务正常工作,下面我们来安装根域为lanyi.com的第一台域控制器。! l. {% A- D& a# l : A5 u: R, v0 f5 \' Z9 o m(1)运行位于C:\Winnt\System32目录下的dcpromo.exe文件,以启动活动目录安装向导。点击“下一步”按钮。 4 a/ ~1 x* @2 z7 m5 G6 m3 y; D! M0 t! t. R (2)由于用户所建立的是域中的第一台域控制器,所以在“域控制器类型”对话框中选择“新域的域控制器”选项,然后点击“下一步”按钮。 , ^: j- [0 {3 Z& m2 B1 l9 Z) p5 p! _; \+ c (3)在“创建目录树和子域”对话框中选择“创建一个新域的域目录树”,点击“下一步”按钮。; ]1 h& I- K! @3 h/ J5 g 3 A. q3 r6 `' g+ S(4)在“创建或加入目录林”对话框中选择“创建新的域目录林”,点击“下一步”按钮。 # [2 D" E4 o; N. j, d- g; H! U! k" ~. |+ m (5)在“新的域名”对话框中的“新域的DNS全名”框中输入需要创建的域名,这里是lanyi.com。点击“下一步”按钮。& M: O; I8 X% Z3 k0 K+ m8 G0 g9 { 2 G/ b7 t( E" {9 y8 G2 S" _. l(6)在“NetBIOS域名”对话框中,安装向导自动将域控制器的NetBIOS名设置为“LANYI”,点击“下一步”按钮。9 P* U& U; P' P; [! D* E) ? + S& e$ Y$ N# _' q(7)在“数据库和日志文件位置”对话框中,将显示数据库、日志文件的保存位置,一般不必作修改。点击“下一步”按钮。, @! c5 p) @* R' C" d! h ( V" p$ a2 X4 G t7 k; L6 Z! ?) V (8)在“共享的系统卷”中,指定作为系统卷共享的文件夹。Sysvol文件夹存放域的公用文件的服务器副本。Sysvol广播的内容被复制到域中的所有域控制器。其文件夹位置一般不必作修改。点击“下一步”按钮。* t% T! ?5 X- E- U) b N5 o: I4 c) ^) U0 O(9)在“配置DNS”对话框中,点击“下一步”按钮(如果在安装活动目录之前未配置DNS服务器,可以在此让安装向导配置DNS,推荐使用这种方法)。 7 j6 ^* x& Z4 D* U. p$ g : ^4 V; D- D1 }0 ?5 T(10)在“权限”对话框中为用户和组选择默认权限,考虑到现在大多数单位中仍然需要使用Windows 2000的以前版本,所以选择“与Windows 2000服务器之前版本相兼容的权限”选项,点击“下一步”按钮。 ; u. j1 k. B `+ Z; w+ a, |1 {9 x) U" y1 [5 l/ U+ M% A9 u0 t1 N; V (11)在“目录服务恢复模式的管理员密码”对话框中输入以目录恢复模式下的管理员密码。点击“下一步”按钮。 / i: @, K$ g# u. |# d ' n% K7 [9 X: @3 ^(12)此时,安装向导将显示安装摘要信息。点击“下一步”按钮即可开始安装安装完成之后,重新启动计算机即可。 9 X2 l( n" a% K, ~/ r. }+ x* z5 n8 u% ?8 e" a 2.检验安装结果* S0 C) w1 I$ \; ^' ?* W+ z- H : Y: s& ?. U3 s# X& P7 N& f 安装完成后,可以通过以下方法检验活动目录安装是否正确,在安装过程中一项最重要的工作是在DNS数据库中添加服务记录(即SRV记录)。; G F! |; z( Z3 n& }- d: ? % e* |8 R( Z% e+ s9 N! X# X (1)检查DNS文件的SRV记录:用文本编辑器打开%systemroot%\system32\config\中的Netlogon.dns文件,查看LDAP服务记录,在本例中为_ldap._tcp.lanyi.com.600 IN SRV 0 100 389 n2k_server.lanyi.com. ! f9 |9 r l& ?6 { & {) K* E8 T$ j0 R/ S, T(2)验证SRV记录在NSLOOKUP命令工具中运行正常:在命令提示行下,输入“nslookup”命令;输入“set type=srv”命令;然后输入_ldap._tcp.lanyi.com。此时如果返回了服务器名和IP地址,说明SRV记录工作正常。! o9 K; o8 q' _( ]" C/ ~% ^ & Q: Q: d0 j8 C 另外,当安装完毕后,在管理工具中提供了三个工具:Active Directory用户和计算机、Active Directory域和信任关系、Active Directory站点和服务。同时系统还提供了Active DirectorySchema和ADSI,主要用于Active Direttory开发的工具。: T5 J9 f/ E# Y! h& @ 6 W* V, Z6 w( E+ l% q0 d0 @Active Directory用户和计算机工具是配置互动目录最常用的工具,在后面我们将详细介绍它的使用方法。1 g1 F, _* x7 u1 r/ g - M* U6 n% G! G. S6 Y6 u 3.删除活动目录- h8 h, m3 j3 R 1 I$ |: u& {4 p2 t9 R( d 与安装活动目录一样,运行dcpromo.exe文件即可。 # z0 Q5 R: y5 G8 v: Z, T- D3 U& R- B/ q3 t 三、设置管理用户和组 0 L6 n8 Y" v2 L: D( e! p在网络中为用户开设账户的工作即是一项基本功能,又是一项非常重要的工作,因为账户与权限有关。% \0 v- A+ ^# k Q' l( `+ n* } S3 Q' X% s: F9 q用户账号保存在活动目录中,为该用户账号启动唯一登录的对象。唯一登录是指从工作站登录获得网络资源的访问过程中,用户只能输入一次名字和密码。域用户账号可以登录到域访问网络资源,或是登录到个人计算机上访问本机上的资源。 ( ?0 I4 }. [. |9 G( m0 P% z! b O/ O- f/ H% S (一)用户登录名 & @2 Z6 [; S2 `+ N1.用户主名2 N. Z0 Y& W. Y: t& l" L : L) ?! [! {& t 在活动目录中,每个用户都有一个用户登录名,和一个pre-Windows 2000用户登录名。用户账户信息用来验证和认可目录林中任何地方的用户,这就导致了唯一登录。( U& g/ t$ ?% z% k; S2 l 3 b/ g1 x" j6 h. I5 P) n 用户主名是只用于登录Windows 2000网络上的登录名。也可将此名看作是用户登录名。一个用户主名有两个部分,它们用@符号隔开。如apple@lanyi.com。一个用户登录名有以下两个组成部分: ' L: V$ y2 ~* p3 a6 K, X 6 T6 D6 P' H& ~# `用户主名前缀:在apple@lanyi.com是apple。 0 u) c2 E/ S( |. Z; o5 y( L9 |: \9 Q" j& D. b% d 用户主名后缀:在apple@lanyi.com是lanyi.com。默认情况下,后缀是网络中根域的名字。用户可以使用网络中的其他域来为用户配置其他的后缀。( t6 A8 k+ D& S0 D3 `8 V( { 0 k( `$ Y; e7 I' d 2.创建用户主名后缀* m& H& Y6 p/ X% f. E 0 ^ y! P+ P# }1 u) |% q0 u (1)点击“开始→程序→管理工具→Active Directory域和信任关系”选项,右击“Active Directory域和信任关系”选项,选择“属性”命令。; E( e# [* m2 j9 U" ~6 v" Q 7 B0 n* e$ H7 e(2)在打开的对话框的“UPN后缀”选项卡中输入一个可供选择的后缀名,如lanyi.com,然后点击“添加”按钮。 3 h% A* [7 t' R, S/ w 4 q7 Q) m; L2 M8 z; J(二)管理用户账号 " h9 V5 h& W5 j1.创建一个用户账号 ! u7 L6 X$ o" Q! v . c; O" M7 `; k8 ? `1 Y(1)点击“开始→程序→管理工具→Active Directory用户和计算机”选项,在打开的窗口的左侧栏中右击“user”容器,选择“新建对象”命令。 3 f, W' g6 i7 c: {' b) e G; Z 1 O( A) J- d2 a* D(2)在打开的“新建对象”对话框中,输入姓名和用户登录名。点击“下一步”按钮,输入用户密码。其中:4 \9 R1 x1 R5 @8 Y$ Z1 ~. V: ?5 s+ k4 j / T! K9 J+ B+ q, ~$ h用户下次登录时需要更改密码:如选中此项,用户下次登录时将提示用户重新输入新密码。 ; Q; M) E$ S4 y0 F: N! C E# Q( U. _1 `用户不能更改密码:这一选项保证用户密码不能被修改。 ' m* c& e' A' c* c( T$ F : p: d2 C$ }% a密码永不过期:如选中此项,密码将永不过期。因为过期的密码将不能使用,过期时间在账户安全策略中设置,或在账户属性对话框中修改。. `" F5 P2 W6 S: Z: S: t + |* h9 m5 G% K+ u6 | q 账户已停用:表明此账户已被停止使用,如想让账户解锁,必须由管理员在用户属性对话框中设置。- A1 D( b% H' Q! [# [9 {6 j. u . Q6 W) |: D+ V: `2.执行公共管理任务 4 K f9 h# w# \3 \: ~, y7 o3 T" C5 M9 M (1)禁用和启用用户账号: 2 m" s' |% M v2 I+ |1 ` : O+ x' s( u2 x% n J当用户一段时间内不需要他们的账号,但一段时间后需要使用它们时,管理员可将此用户账号禁用。 $ U+ ?9 B; o. H- a3 T ! e( R% O7 ?4 e0 F9 U在“Active Directory用户和计算机”窗口中,右击相应的用户账号,然后根据该账号的当前状态点击“停用账户”或“启用账户”命令即可。 ! e" R' K/ b! e4 Q3 U& C0 w. k* h& ` / R" x) y( Y; G(2)重设密码: / Z3 t& P! }3 V; j* m: }; e2 x9 p# b 0 `. ?4 X. p- a: f当在用户改变密码前密码期满或是用户忘记密码的情况下,管理员需要重新设置密码。 8 S& B+ s- b' }( q) i* u+ r. m5 h7 R0 a! m" l9 | 在“Active Directory用户和计算机”窗口中,右击相应的用户账号,然后点击“重设密码”命令即可。 # Q, H) ^& x; w3 I! L' w5 L- [9 w: p! u3 z (3)在一个域内移动用户账号: 7 d/ F3 v- e9 D. p + x5 t: O$ d! U3 g% B1 l必要时,管理员可能需要在同一个域内的OU之间移动用户账号。例如一个职员从一个部门调到另一个部门,这样将由另一个管理员管理该职员的用户账号。8 o( q0 V0 B) ?1 Z/ P$ I9 \ 4 z) [! H9 N* W5 k8 [& [% B* \在“Active Directory用户和计算机”窗口中,右击相应的用户账号,点击“移动”命令。在打开的“移动”对话框中,双击域目录树,点击对象要移入的OU,然后点击“确定”按钮即可。 ' v: [: s8 A( w* c7 t6 D* K- c5 G* K/ k + Q% u; V. T) D- C(4)删除用户账号: ) c( ]( I- \6 R$ E" |5 J3 A9 @7 |( K w, x 在活动目录中存在有无用的账号,如果一个授权用户能够使用一个无用的账号登录可能会引起网络安全的风险,所以对无用的账号应当删除。6 m' e$ F3 p: H / G9 ]) J, d9 S在“Active Directory用户和计算机”窗口中,右击相应的用户账号,然后点击“删除”命令即可。; X" b& R. l* ^" u6 C & L* z8 |8 Z& w0 K. L. ?1 k (5)重命名用户账号:* h& U+ a: o+ u8 W! G5 X7 S0 D' L # `' C* @2 M$ n4 ?$ x: n: n如果管理员想保留以前某个账户所指定的各种属性和权限给一个新的用户时,可以将以前的账户重命名。, _# {' X6 K2 g1 f6 ~ c" \/ b2 x % u( B' @7 S! j 在“Active Directory用户和计算机”窗口中,右击相应的用户账号,然后点击“重命名”命令即可。 - X% f2 j5 D4 E. V: \6 j* i* q* D8 \3 Z% z 3.为域用户账号设置属性 8 }6 @" E& N6 i6 t+ \4 W8 y& O% \+ ~9 g4 X/ x( b. C) y (1)设置个人属性:* K$ G3 ?$ X3 E+ Y $ s8 n) l; @# W 在“Active Directory用户和计算机”窗口中,右击相应的用户账号,点击“属性”命令即可打开相应的属性对话框。在该对话框中,各个选项卡对应于不同的用户设置,你可以根据具体的情况尽可能的详尽填写。这样做的好处是利于以后的账户查找。) B2 M8 V Z e0 H, ^" u % ^" \3 ^2 @ V' P" ~ f (2)设置账户属性: 9 M7 V/ V+ }/ j6 [" y! b + Q, B! A1 M2 C: S6 {4 y* A在“账户”选项卡中管理员可以指定用户的登录名称,设置账户选项,指定账号失效日期。5 [* {* q' z3 q+ W% I 7 r7 T; X7 m$ o你可以在该选项卡下配置当你创建该账户时指定的设置值,如用户登录名和登录选项。可以修改密码需求条件,为此,在“账户选项”选项组下选择相应的复选框即可。2 _$ n% Z$ }# \8 P0 i& U9 g 3 ^. r C3 {& Y$ x除此之外,还可以在该选项卡下设置用户账户的失效日期。到达这一日期后,Windows 2000将自动禁用相应的账户。默认情况下,用户账号永不失效。为此,你只需要在“账户过期”选项组中,点击“在这之后”选项,然后从列表中选择一个失效日期,点击“确定”按钮。 2 j3 |( X! h+ L4 j) f$ s' V 0 M7 _/ M$ w- ?1 Z(3)指定登录选项:7 f4 ^' h9 O, w2 B+ @1 D, H 2 [6 N' L- \- J; D _ 你可以通过设置用户的登录时段,控制用户可以在哪些时段登录到指定的域,你也可以通过设置登录工作站,来控制用户可以从哪个计算机登录到指定的域。 ) L1 S$ F6 B1 x7 K 0 ^! I0 @2 V0 B. G- b在默认情况下,用户可以每周七天,每天24小时连接到服务器。在高安全性网络中,你可能想限制用户可以登录到网络的时段。为了设置登录的时段,你可以按照下面的步骤进行:" j5 V& [0 t% j3 y3 a8 S : [6 b5 Z( ^/ C' j 在“账户”选项卡中点击“登录时间”按钮,打开相应的对话框。其中蓝色指示该用户可以登录到的时段,而白色框指示该用户不能登录到的时段。 ( i/ | Y, e+ q( B5 \4 [- n$ D% ? 在“天”和“时”框中,选择你想拒绝访问的时段框,并点击开始时间,然后向终止时间拖动,再点击“拒绝登录”或“允许登录”选项即可。5 F8 V c7 e; B ' `' y6 K5 z/ E% `$ x, w1 \ M同样的,你也可以指定用户从哪个计算机登录,在默认情况下,具有合法账号的任何用户都可以在运行Windows 2000的任何计算机登录到网络。 / j/ A& v2 x& W! y! K! c 9 u! x4 Z% ^- n+ C在“账户”选项卡中点击“登录到”按钮,然后在打开的对话框中点击“下列计算机”选项,添加用户可以进行登录的计算机。为此,在“计算机名称”框中输入计算机的名称,点击“添加”按钮即可。' k2 l. Q8 l8 c3 L& `; D/ Q 9 l% x& d1 ^* p: T' F+ m2 U2 s 4.用户配置文件/ F, F+ s4 A. r( e( w / r+ e+ r7 _1 C% q% u, f* q% r. O在Windows 2000中,用户的工作环境主要由用户配置文件定义的。为了安全性的目的,Windows 2000要求每一个访问系统的用户账号都有一个用户配置文件。用户配置文件包含所有必要的设置值,这些设置值包括显示器、区域设置、鼠标和声音设置等,除此之外还包括网络和打印机连接。- O# o0 t3 ?. k# j3 F2 S( V " e- ]; ~% b4 P) ]+ X f (1)用户配置文件的类型: ; f r- L: Y& L" w! s4 y8 Q 0 J- C: u' U) ?4 R" o/ U用户配置文件在用户第一次登录到计算机时创建。所有针对具体用户的设置值都自动保存在该用户的文件夹中,即C:\Documents and Settings\用户名。 , f: [ {, X9 p0 g ) ? z+ Z' P, w! E默认的用户配置文件:用作所有用户配置文件的基础。每个用户配置文件都开始于默认的用户配置文件的一个复制件。8 H& Q) X, R5 q7 Y . M+ F Y) @& A1 w$ C本地用户配置文件:在用户第一次登录到计算机时创建,并被存储在本地计算机中。每个计算机上可以有多个这样的配置文件。+ P1 R; O7 i4 q6 B N 9 N5 u7 U; L2 ]9 J$ q漫游用户配置文件:由系统管理员创建,并存储在某个服务器上。在任何时候,用户登录到网络中的任何计算机时,这一配置文件都是可用的。如果某个用户修改了他的桌面设置值,在该用户撤销登录时,这一用户配置文件即在服务器上更新。6 U y* J5 O# x ) ~3 D/ b3 \' {% Q3 [" k7 _9 O强制性用户配置文件:由管理员创建,用于为某个或某些用户指定特定的设置值。强制性用户配置文件可以是本地的或是漫游的用户配置文件。它不保存对用户桌面设置值的任何修改,用户可以修改他所登录的计算机的桌面设置值,但是当他们退出登录时,这些修改不被保存。 0 K* N" Q+ g$ k2 `9 @1 v3 b$ t! K% o1 t3 _; _7 X4 `, z" X (2)创建漫游的和强制性漫游的用户配置文件: 4 P) |" z& g) ^8 R$ o ; Z5 L1 a7 \$ i+ ~) J5 J让我们来创建漫游的用户配置文件:9 u) h) l1 s8 q i$ ^ H 5 j( @; W T) J7 y7 P8 X! c4 [6 n在某个服务器上创建一个共享的文件夹,并为用户提供对于该文件夹的“完全控制”的权限。$ L6 z! R2 B7 t 0 d3 K. M' [( j' q在用户账号属性对话框中,点击“配置文件”选项卡,在“配置文件路径”框中输入相应的路径信息,用以指定共享文件夹。键入的路径信息应该是\\server_name\shared_folder_name\user_name。可以采用变量%user_name%,而不键入具体的用户名称,此时,Windows 2000将自动用漫游用户配置文件的用户账号名称替代%user_name%。/ C, s% K _& |; ~, G3 P 6 z4 G* |1 i b: z 下面再让我们来创建一个强制性的漫游用户配置文件:8 u5 c& K+ W0 M4 @' {( h6 } - j0 S: R9 W F- l首先在某个服务器上创建一个共享文件夹,其中包含一个配置文件夹,创建的用户配置文件将被置于该文件夹中。为用户提供对于这一配置文件夹的“完全控制”权限。例如创建一个名称为“Profiles”文件夹,然后在该文件夹中创建一个名为“User1”的文件夹。 # k2 o" h( \. v3 ?7 c3 s5 K1 R 6 }1 Q. q0 |2 h建立一个已经配置的漫游用户配置文件。在“Active Directory用户和计算机”窗口中创建一个新的用户,指定该用户的配置文件夹作为路径信息,然后配置该配置文件。如创建一个名称为User1的用户,并指定配置文件的路径为\\server_name\Profiles\user1。为了配置该配置文件,以User1作为用户名称登录到域,必要的时候修改桌面设置值,然后退出登录。 0 \* A6 M O3 s5 d! E8 n# @' K) I3 q: `: f. Y+ @% W/ x 将配置文件Ntuser.dat重命名为Ntuser.man。这样做将使配置文件成为只读的,并因此而成为强制性的。& W3 p" Q5 k! z& V- L d/ s* I 5 F9 v3 C7 s/ B+ V (三)活动目录中的组& P* [9 k* Q3 X 组是可包含用户、联系人、计算机和其他组的Active Directory或本机对象。使用组可以简化管理。' Q, F. G2 b" L6 c6 g0 S ) P$ _/ W T8 n) a, c; Q& r1.从组的类型分类# P% ? K# B7 S: P! G0 K- I1 E& i 1 V, O9 H& U" d& Q( m(1)安全组:用于将用户、计算机和其他组收集到可管理的单位中。为资源(文件共享、打印机等)指派权限时,管理员应将那些权限指派给安全组而非个别用户。权限可一次分配给这个组,而不是多次分配给单独的用户。 . e/ c9 f) G* d& E7 L# d ( N" o. l6 D, ~) b1 S8 k+ O(2)分布组:只能用作电子邮件的组。不能用于筛选组策略设置。该组无安全功能。 - N3 ^8 H! |; B0 C+ E* }4 d; m6 A+ R1 G; r 上述两种组都支持域本地、全局或通用组范围中的一种。1 ?3 m* I9 q7 ^: p2 @5 i0 G & F) l" I3 {0 ~3 Z; ?7 t 2.域模式5 _5 S' V5 q" A3 [6 n+ x0 I $ L3 U1 v4 a; n% y2 g& l) T在学习本地、全局或通用组之前,我们需要先讲述一下域的模式。域模式共有两种,混合模式和本机模式。计算机刚升级为Windows 2000域控制器时,默认情况下为混合模式,如果你想更改为本机模式,可以按照下面的步骤进行:( J1 F1 I% X ^ i9 T3 Y& p ( E* d1 C4 q8 {# E# I在“Active Directory用户和计算机”窗口中,右击域名,选择“属性”命令。此时,你可以在打开的对话框的“常规”选项卡“域模式”选项组中,点击“更改模式”按钮,在打开的对话框中点击“是”按钮,即可将域模式改为本机模式。 + l' e9 H. R; k, G0 i 6 X9 @4 `+ E& I$ T7 p3.全局组2 h- g( M9 X' q2 g5 ^4 e+ V ( w- }, ~2 D U 利用这一组作用域,来组织那此具有类似的网络访问需求的用户。你可以利用全局组授予访问任何域上的资源的权限( i6 F2 n3 H/ F% N6 d ' r; e" J, F% ~# q (1)成员资格。混合模式可以包含来自同一域的用户账号。本机模式可以包含来自同一域的用户账号和全局组。4 j/ x0 u8 A( ~+ T " o8 k5 M E6 w) \(2)成员范围。在混合模式中,全局组可以是域本地组的一个成员。在本机模式中,全局组可以是任何一个域中的通用和域局部组,以及同一域中的全局组的成员。 d, r1 {5 \2 N0 l8 @ 3 c' J5 Y; x* s+ V( K0 E# ^+ C. x% D(3)作用范围。全局组在它的域及包括目录林中的所有域的所有信任域中都是可见的。 ) p8 i8 g! o- ^) e9 u# l! U / c X/ r' r2 B4 y; ^* v* P(4)权限范围。目录林中的所有域。 3 w- x+ w8 `% n2 Z, g" E% _$ e0 y1 n) G8 J2 v4 c. ?% r 4.域本地组. l5 l6 ?! s/ [- @' e 8 c& ^( @6 c& {# ~ 利用这一组作用域,可以授予访问域资源的权限。这些权限要位于创建该域本地组的域中,但是不必驻留在某个域控制器上。 " E! Y/ f5 H4 t$ E7 j ) {3 k. D( a; x(1)成员资格。混合模式可以包含任何域的用户和全局组。本机模式可以包含目录林中的任何域的用户账号、全局组和通用组以及同一域的域本地组。, ~8 \" D! [' A* ~; f4 e- q, P 9 {. @" i' j0 q/ c (2)成员范围。在混合模式中,域本地组不能是任何组的成员。在本机模式中,域本地组可以同一域中的域本地组的成员。 * E" ^$ g9 `( k6 a3 R0 R0 } . N; R3 h8 }8 \1 W% q0 O+ b(3)作用范围。域本地组只在它自己的域中可见。' W9 l' o; H; r ( d6 \0 l& j( u9 b5 ~- N" e(4)权限范围。域本地组位于其中的域。1 ]; E5 O) Q3 L! s0 O 4 x4 s j% O0 R 5.通用组 + r# o$ @/ o0 A S& J/ L9 i! s" U! v4 _ 利用通用组可以为多个域中的相关资源授权。利用通用组可以授予访问任何域上资源的权限。 5 o) E1 |1 f9 h: u! b % ^, x& M9 f4 a" F: ~* N! l+ B7 D(1)成员资格。在混合模式中不能创建通用组。本机模式可以包含来自目录林中的任何域的用户账号、全局组和其他通用组。 & W% e" F$ B$ v, T / b2 z6 y4 v7 z1 k$ p(2)成员范围。通用组在混合模式中不适用。在本机模式中,通用组可以是任何域中的域本地和通用组的成员。 * C& S* i! {' n( Z; g4 N9 f9 }5 [7 l$ H2 b; l$ A (3)作用范围。通用组在目录林中的所有域中都是可见的。, _$ ^$ D @7 j$ m5 g; ]" E' [ # U' M3 R b4 d(4)权限范围。目录林中的所有域。* X% z$ y. P Y" H ; B+ J/ I7 T9 K" v4 T1 P& W 6.在域中使用组的管理思想 - a: d h% G6 g& y" G. o6 j a O" s# v4 f7 h1 k6 L2 i 经过上面的介绍,相信大家知道组是可以嵌套的,而且有了组,对于多个相同权限的用户,再也不用分别给每个用户赋权了,只需给一个组赋权就可以了。那么在Windows 2000域中使用组应遵循什么原则呢?+ k; [# {6 r8 _5 }: u7 B g( L+ Q0 P1 Q4 V; U8 e% j+ `; l* {/ F 这个原则其实很简单,那就是:将用户加入全局组;将全局组加入域本地组;给本地组赋权。 : N# u6 b$ [) Z1 \1 u8 I7 U# O* D( a& m; j0 X. v, v+ B 这也就是AGDLP,其中A(User Account,用户账号)G(Globle Group,全局组)DL(Domain Local Group,域本地组)P(Permissions,权限)策略。这个策略是一种管理思想的体现,它提供了最大的灵活性;同时又降低了给网络分配权限的复杂性,尤其在有多个域时,这个策略就更加具有优势,如果只有一个域,那么这个策略就可以更简化了。 ! t6 T6 P% y' E& w1 \; X# [% t" \+ {$ g4 X! L+ ] 四、在活动目录上发布资源 9 o3 S) a5 R; R8 j- R" x! _% d发布的意思可以简单地理解为在活动目录中可见。在活动目录中发布资源要注意发布相对静态的、很少改变的资源。( H6 r( `" M9 e l$ i / p8 n* `- Z; e: P1. 资源的发布! C+ t- `. J1 ]5 b0 C6 F: \ (1)公布共享文件夹: & }& W1 k4 w% P7 v- d$ {, x# h8 n* y 要想将共享文件夹发布在活动目录上,就必须手工加入,而不会自动产生。 3 b( Q" k5 f0 _& d$ h- n1 G2 [$ T; u 首先在“Active Directory用户和计算机”窗口中双击域节点。然后右击想在其中添加共享文件夹的文件夹,选择“新建→共享文件夹”命令,打开共享文件夹对话框,键入文件夹的名称,键入用户想在目录中公布的UNC名称即可。% B6 H9 O/ D4 m% s G ) g5 B/ H6 t- u( P" o& @(2)公布Windows NT打印机: + X/ R0 M0 P* P4 t! ` 9 D( N. V9 h; H; b9 o! a域中的Windows 2000计算机上的打印机都将自动发布在活动目录中,下面我们讲述非Windows 2000计算机上的打印机。 ) y. j) Z( Q1 f# z6 ~9 O9 i. C1 K+ }- G v; N* d 首先在“Active Directory用户和计算机”窗口中双击域节点。然后右击想在其中公布打印机的文件夹,选择“新建→打印机”命令,打开相应的对话框,在其中键入用户想在目录中公布的UNC名称即可。 5 s! F! z# h3 @3 @1 b2 v8 d6 t& U/ N Q& V) p3 R$ u, t2.资源的查找 * T& F$ `; ]0 [3 o0 w9 O E/ K在“Active Directory用户和计算机”窗口中,右击域节点,点击“查找”命令,打开“查找”对话框,点击“自定义搜索”按钮。 % V. y: l D* s) Q, l l0 S0 \- y5 P i, W 点击“字段”,指向要搜索的对象种类,然后点击要为其指定搜索值的对象的属性;在“条件”中,点击搜索的条件;在“值”中,键入要应用搜索条件的属性值。点击“添加”按钮,将该搜索条件添加至自定义搜索。点击“开始查找”按钮即可开始搜索。 " \& `8 B* I% e. y( E; P " `& [: s; I: [重复上面的步骤可以添加所需的全部搜索条件。/ {; D8 Z3 p. J( o" @7 I 1 q& M; j7 [* X5 n7 ?五、实现组策略, ^; Q8 p' W0 Z, @7 c3 P0 P 组策略(GPO)为网络提供了比用户和计算机更多的管理控制能力。通过使用组策略,一旦定义了用户的工作环境,就可以依赖Windows 2000来连续推行定义好的组策略设置。可以将组策略应用到整个网络中,也可以仅将它应用到某个特定的用户或计算机组上。! P: Z. w2 m) A 9 Z# g" p: t/ r(一)组策略基础 % u; R7 y" S& t- B1.组策略的作用 1 W+ p) h6 B- A / d9 ?/ _. ?$ O% W4 e, ?+ n0 K使用组策略可以:- ~) a' e, c" i# `( m' \ ; p4 g7 r7 u' E2 |! X(1)通过站点或域的级别,为整个组织设置组策略的集中化策略,或者在组织单元的级别,为每个部门设置组策略的分散式策略。 % L3 }: \2 z* X+ D# o 9 _3 |, G% ~7 a6 y* _; \9 t(2)确保用户有适合完成他们工作的环境。' H& {& P+ a- Z2 T5 E3 \, Z/ C 2 W" |3 }: i9 f) s% Z! E0 G' B4 J(3)降低控制用户和计算机的总费用。) w7 ^+ f, z) l7 _ z* z. }5 ~* `$ R+ o 2.组策略类型 . A1 f- y, }3 S8 G* r% I5 P1 c, S& O0 F# y$ v7 Y* D& I 管理员模板:即基于注册的设定应用设置和桌面环境的设置。( p6 H' z! B! B) ^& ]& u: B; L 5 k3 I# ~0 Z3 |6 z o* ? 安全性:即配置本地计算机、域及网络安全性设置的设置。1 n8 k! H) z5 I5 I! c& X: w$ X 3 V8 i9 m) @8 D4 q9 f. m) \, C1 z 软件安装:即软件安装、升级、卸载的集中化管理的设置。. @+ N. q4 `. E+ A + @( f! Z n. P- u& ]2 M7 N- N命令:即当Windows 2000运行特定命令时的指定设置。% c2 W7 l3 v0 A5 q% s3 q4 S ( O' u+ f; _8 A. ?- G8 h u5 v远程安装服务:即当运行远程安装服务(RIS)的远程安装向导时控制用户可能的选项设置。 . {6 L+ J3 W! K" h 5 @5 z) D w+ f1 WInternet Explorer维护:即管理和定制基于Windows 2000计算机的Internet Explorer的设置。 5 X/ i3 {( J5 }, C. d% ` ! ~4 v7 ?. H; A3 ]! S文件夹再定向:即在网络服务器上存储用户个性化文件夹的设置。 - [6 y; i0 g; m6 }$ |, Q( L# o( [! M 3.计算机组策略和用户组策略! u+ M9 j7 @! Y' t( c/ |) R- A0 d: I% s6 M : g9 Z; s9 i; y5 m0 p% j: c 组策略中有计算机组策略和用户组策略设置。! R( }- X p/ {" A+ w* P ! {3 d& Z& E$ A. F5 I# J计算机组策略设置有:操作系统行为、桌面行为、安全性设置、计算机的启动和关机命令、计算机赋予的应用程序选项以及应用程序设置。& s8 B+ s( O5 T: I9 h. g 4 H1 `$ X4 p U) N用户组策略设置有:操作系统行为、桌面行为、安全性设置、赋予的和分布的应用程序选项、应用程序设置、文件夹的重定向选项以及用户登录和退出登录命令。# j* R2 o1 b' U ! |+ Z( L6 G+ q2 O" c注意:通常计算机组策略在和用户组策略冲突时,计算机组策略有优先权。 8 A- B" \8 T6 }3 Z7 Y 2 Z4 Z2 s8 T' Z8 S0 O2 ^将组策略和站点、域或组织单位链接后。组策略的设置将应用在站点、域或组织单位的用户和计算机上。管理员不能将组策略和默认的活动目录容器──计算机、用户和Builtin相连,因为它们不是OU(组织单元)。 * I2 g8 I6 J6 f' F! t% I; R6 `& M$ E" H+ {1 T (二)创建组策略和组策略的继承 % s2 X, E9 G/ ^) N1.创建组策略 ' A# v6 Q7 }) @! G. y9 _1 N& w* K % w6 I$ }2 x6 ^ ^8 @: H0 c( ]通过使用活动目录用户和计算机来为域和OU创建组策略,执行下面步骤:- b% H$ @& d3 z9 S) ]. v 3 b" q8 I9 E7 ~(1)在“Active Directory用户和计算机”窗口中右击想创建组策略的域或OU,然后点击“属性”命令。" X2 v% b* x( [, U 3 E/ a: N9 o, Z% e7 C (2)在打开的“组策略”对话框中点击“新建”按钮,然后为新的组策略输入名称,默认为“新建组策略对象”。8 S, Z$ _& d3 H0 b" V + A, [ M" l$ D* o" k: H+ d2.连接组策略0 o! M# \. K$ E( p( } 2 ^% h8 d9 |& Z9 C) z: T5 r连接一个已存在的组策略到域和OU上,执行下面步骤:4 d0 h3 b: l) u: t- ~6 p ] & Y8 ~, c7 c" P9 A! T$ n (1)在“Active Directory用户和计算机”窗口中右击想创建组策略的域或OU,然后点击“属性”命令。  8 l1 u3 `' X8 {3 Q0 z- T . T1 `+ l L# T6 Z (2)在“组策略”对话框中点击“添加”按钮。) @* j c3 _- x* d3 o% H0 x; U- W ) w0 a- C5 a& B2 T/ J8 e (3)在打开的“添加组策略对象属性”对话框中的“域/OUs”、“站点”或“所有”选项卡中,点击确认要连接的组策略即可。 / J& I+ ?1 k+ p, m' y) Y8 b; y K$ u8 U, z, F 注意:任何一个拥有该组策略的读写权限的人都可以对它做出修改。 $ A$ i9 y1 e/ e+ t4 X3 m% m! t$ F- S# I8 n' r8 [4 G 3.组策略继承 7 T2 c& l. t- }) t( d/ l- W& `: S, n. M2 J8 P. `+ z 组策略的继承性包括Windows 2000在活动目录中处理组策略的顺序,以及在连接到母容器的组策略的继承性。其继承流程是:8 k( [2 t. V; Z; ?" S- @ 8 |, \* n4 K, i% v/ r) E6 { 默认组策略被继承。子容器从父容器那里继承组策略,意味着子容器可能拥有多个用于用户和计算机的组策略设置。不止一个组策略与它连接。如果一个站点包含一个域以上计算机,连接到该站点的组策略中定义的组策略设置将应用到所有登录到该站点的计算机设置用户上,不管计算机和用户账号是否存在该域中。 ) K, V9 F! d7 q7 M# `" e# B! V# Q " Y+ P+ L1 G+ e域控制器每5分钟刷新一次组策略,重要的组策略设置将在危急的服务器中快速发挥作用。Windows 2000首先处理计算机设置,然后处理用户设置。 ; A8 t+ C9 Z. n: x$ ?( ? , v$ }: v" t0 G8 `6 V下表列出了客户端扩展和对应组策略设置类型(位于C:\Winnt\System32目录中):(^60090102d^) # y& T" a x! s- X' ]+ v& ~$ H g7 w' j! a! j5 t3 {: t7 T 4.解决组策略的冲突 , N! h& a9 D4 y& h) D& j9 O' d! {1 v9 t5 j 如果发生冲突,默认的是执行最新的设置;除非用户设置和计算机设置冲突。而在大多数场合下,计算机设置高于用户设置。组策略是累积的,除非两个或多个设置冲突,否则所有组策略设置都将被执行;当冲突发生时确定执行哪个组。 4 E# i; w* r6 f# |0 V+ ?% _( @ , d3 m- r \+ B5 Q, z% f策略设置的原则是:& S& l, P" L5 B 1 G F' ]4 q" T# _7 o( W(1)来自母容器的组策略设置,和来自子容器的组策略设置冲突,子容器的设置后执行并发挥作用。/ }$ B7 k% C; ?! Y* t 7 @. u% @2 ^, f, k, m) \(2)连接到同一容器上的,不同的组策略的设置发生冲突,在容器属性对话框中,组策略列表中最高位置的组策略设置后执行并发挥作用。组策略累积处理的例外是IP安全性设置和用户权限设置。当执行IP安全性设置和用户权限设置时,最新执行的组策略将改变以前组策略。 ( w D6 x3 h# @3 }: P4 y1 {9 `* C5 ]* O* _ a; X 5.修改组策略的继承性, C" _& h! ?! b ^$ I* g' p l7 P* R 阻止继承,将不允许子容器从母容器那里继承组策略设置。允许在一个子容器阻止继承,将阻止容器所有的组策略设置而不是单个设置。当活动目录的容器需要唯一的组策略设置,和需要确保设置不被继承时,这一功能将是很有用的。+ S& v- X- P$ C% O ! w& ~( ? u. e2 H 阻止子容器的组策略容器继承,执行下列步骤: ; b) F, \5 M; v( G 2 N- `9 F% d% J4 Z! e(1)在“Active Directory用户和计算机”窗口中打开想阻止继承的域或OU的“属性”对话框。/ J9 {( k) F% r ! s3 q/ _; u4 x) t* K. ^ (2)在“组策略”对话框中,点击“阻止组策略继承”项即可。 8 ?* w# K4 u/ X8 ~- a * Y6 m O1 D* T) V" Y注意:阻止组策略继承的两个局限。即你无法选择阻止哪个组策略;不能阻止连接在母容器设置为不重写(禁止代替)的组策略。& z3 C! E7 c% ?1 R o9 t " h! s, Z! D; I0 a" }$ [" M( p' b 6.监控组策略 U* T# Z' D" C/ s5 Q2 n& ?5 \5 C & {' r) A# X4 m F# ^2 C7 C(1)启用诊断记录:" i) N0 B) B/ {0 u8 R2 b $ D! [6 Z& A2 v" G7 y- m) W启用组策略的诊断记录,促成组策略在事件日志中产生具体事件。这些具体事件,能够通过返回事件以及提供附加信息,在诊断组策略执行相关问题时提供帮助。 : I- y8 l/ _6 z1 H5 j, z $ P. B3 l% Y9 p1 {, `9 ~以本地管理员的身份登录,然后点击“开始→运行”,在“打开”对话框中输入Regedit,打开注册表的编辑器。定位至HKEYLOCALMACHINE\Software\Microsoft\WindowsNT\Current\Version,然后点击“编辑→新建→项”命令,输入Diagnostics后按回车。! l0 @- @8 y1 O% S * v- w( M1 t+ s- ^! A 选择上面建立的Diagnostics项,点击“编辑→新建→双字节值”命令,输入RunDiagnosticsLoggingGlobal后按回车。 - W$ D/ k' n7 n. W3 @5 ]9 c( b3 t& ~, l6 S& d 最后双击RunDiagnosticsLoggingGlobal,输入1即可。 2 Q: i2 @' u' M& J% {3 F9 r2 C. s" ?- X& m/ q (2)启用详细记录:. u$ u; I3 b* @1 d9 r% g & o: ^! Z5 p( I详细记录将记录所有的变更和应用到本地计算机和登录计算机的用户的设置。日志文件位于Systemroot\Debug\Usermode文件夹下,命名为Userenv.log。启用详细记录将涉及添加详细记录的注册关键词。; |4 W( C0 i- {! [! I! x 2 ]$ X; X l: o K8 F为了允许详细记录,添加名为UserEnvDebugLevel值为30002双字节记录值到注删表中的HKEYLOCALMACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon下。2 T+ `8 m6 \ s" q2 [ # w b2 k. `: q) y" d注意:30002的值允许详细记录,30001仅允许错误和警告记录,30000不记录任何事件。 ! C- G+ Z7 u4 B- o, Y1 I6 K h$ O' @, L; Y/ \2 b (三)利用组策略$ \$ b) f2 Z- c( W' S 1.组策略管理用户环境/ K. ~" \7 U0 D2 [ 0 ], j: J5 D& [9 D4 J4 Z 管理用户环境意味着用户在登录网络时,控制用户有哪些权力。可以通过控制用户的桌面、网络连接和用户界面来控制用户权力。控制用户环境可以确保用户有执行他们工作所需要的权力,但不能破坏或不恰当地配置他们的环境。( _) X# }( B7 v' l1 m 3 S# C, P9 f% ]用来管理用户环境的四种典型组策略设置类型是,管理模板设置、脚本设置、文件夹重定向和用户界面。% z% ~5 k+ F+ N4 R& S , X/ Z- h7 i3 A ?' d组策略管理模板是用来管理用户环境的,基于注册的设置。该设置将修改存放在两个注册表目录树下的设置。其中:; Q3 @: L: D Q' t6 ] . K$ I/ u6 h$ D1 b" l计算机设置:在HKEYLOCALMACHINE\Software\Microsoft\Windows\CurrentVersion\Policies中。 + Z# T; ?9 R6 X " p1 V; m' L0 G3 }% _4 Z2 ]/ w用户设置:在HKEYCURRENTUSER\Software\Microsoft\Windows\CurrentVersion\Policies中。 3 }8 W7 S# W: d1 ^- V" a. b) {6 f 2.管理模板设置的类型 . X, |1 E) ?, s- f' b/ W 5 i3 d! o6 g4 R5 [# P- J" W管理模板设置的类型分为七种,都是用户和计算机的设置: + ?, p8 e ?9 u0 k( x4 J 8 K i" V* x# E/ `, w' r \2 h(1)Windows组件:用户可以访问的Windows 2000及其工具和组件部分。计算机和用户为该设置类型的使用者。 ) C! M, u' G# d0 `4 a/ O3 Q0 b ! B/ A/ ]! Z8 t P: S3 @% {% \(2)系统:登录、退出过程。利用系统设置,可以管理组策略、更新区间、启用磁盘限额和实现回环处理。计算机和用户为该设置类型的使用者。; U- f+ X- y, k \ : {0 w' ]( n. p(3)网络:网络连接和拨号连接的属性。计算机和用户为该设置类型的使用者。 * M: D8 V B! J! i# e! v! Q+ e- o+ ^! |! y7 [0 p (4)打印机:打印机设置,可以是自动公布在活动目录中的打印机,并使基于网络的打印无效。计算机为该设置类型的使用者。% n; l$ B( w) }$ d+ M% z % z; s1 H" @* |# ^! w. x (5)开始菜单和工具栏:用户可以从开始菜单中访问的功能组件。用户为该设置类型的使用者。 : j7 M1 t/ H7 j4 H4 x$ J( v! I. F6 d& L+ L: a: u (6)桌面:活动桌面。通过隐藏某些桌面图标并控制用户对“我的文档”文件夹使用,可以控制用户对网络的访问。用户为该设置类型的使用者。 # ?9 W* S: T5 ~4 l2 f( k5 R% N1 U& K+ t, K6 s (7)控制面板:控制面板上的一些应用程序。用户为该设置类型的使用者。 2 {0 C7 v: b# x. S! C% F4 E5 i$ E+ X2 U2 X( E 禁用桌面的设置。如下表所示:(^60090102e^)( V5 \, e" q9 Z b0 U4 V $ c! \$ R+ k$ P `, h" g( l9 q3 d4 q 禁用用户访问网络资源的设置。如下表所示:(^60090102f^) 1 w7 {6 N1 h" Y+ s. L0 V# u& P! D- K" K( `2 v 禁用用户访问管理工具和应用程序的设置。如下表所示:(^60090102g^) 4 b& K; u$ \! O# |8 E2 S: Z4 X. i8 t8 B7 g* [# G 3.组策略中的回送处理模式% }5 K4 _3 N/ [: Z% X, u6 t$ Z - I# f( z$ |% p9 b$ L, w组策略回送处理模式,可以把用户管理模板设置实现到计算机上。回送处理模式是实施应用于计算机的组策略中的用户配置设置的组策略。对于指定具体任务的计算机或安装了特殊软件的计算机非常有效,按下列步骤启用回环处理模式: t2 S4 N ?6 J ( F& m6 s. T( L(1)打开组策略,展开“计算机配置→管理模板→系统”节点,点击“组策略”选项。 9 I; I) D) e$ \ 9 l. G* D' G" I(2)双击“用户组策略反向对应处理方式”选项。: z/ M6 [% s1 Q! c- s! b ; a; C! y/ a6 s3 b* P (3)点击“允许”按钮,然后在“模式”中选中“替换模式”或“合并模式”。“替换模式”处理应用于计算机的组策略;“合并模式”首先处理应用于用户对象的组策略,然后处理应用于计算机对象的组策略。如果设置发生冲突,将实施组策略中的计算机对象设置,因为这些组策略设置最后使用。" f; x2 B0 U! _/ N% y0 _ ) k8 A% q3 u' z# ]( [2 j 4.设计组策略模板3 u* `5 ~! Y6 n 6 f' W, w q# ^# o$ G 通过在组策略中配置管理模板扩展名中的设置,实现管理模板的设置。在组策略“属性”对话框中的三个状态说明如下: Y7 g3 ?- p" r# i: n" C* u. K # Q- a1 k% Q& H; j' G6 I6 r" Y未配置:不对计算机产生任何变化。' C" }6 T ]* i! [$ T( W. Q + y q# G% o9 b, V6 o启用:把引起的变化添加到注册表中。 3 D" I! y! \- Q3 o8 N/ i- x5 r; L4 p4 j( a' ]% q2 ?- k) \: h5 J4 | 禁用:防止引起的变化添加到注册表中。0 @; V2 R! ?' H* _3 F! m! Q* b 0 V7 w( z6 D2 q/ | G* Y5 k 右击合适的站点、域或OU,点击“属性”命令,然后点击“组策略”选项卡,建立或选择现存的组策略,点击“编辑”按钮。 5 @7 o' ~, y6 T. ~: s ( ] w5 T: {: A在组策略中,展开“计算机设置”或“用户设置”选项,然后展开“管理模板”直到确定需要修改的位置。最后在组策略属性面板中,双击需要修改的组策略设置。 : Z- t* A# M, E+ I6 J/ f( L4 M3 S8 O; g' O 5.用组策略分配脚本 $ {3 C$ N4 B, {) r/ [3 R8 C) g( N; D 利用组策略脚本设置,可以把脚本设置成在指定的时间里自动运行。管理员可以利用策略中的脚本扩展来运行批处理文件、可执行程序和支持脚本的Windows脚本主机。组策略脚本设置可集中配置脚本,在计算机启动、关闭、用户登录、退出的时候自动运行。 4 k7 f- ?2 _" Q# j8 h + q& H* b: f* B! GWindows 2000按下列的顺序处理并运行指定脚本的组策略:# e* G3 O- [* K( V' i' L) U. ? 4 ~/ M: M! v% h: z( ]' p: ?$ X (1)当用户启动计算机、进行登录时,存在以下几种情况:启动脚本缺省情况下,隐藏、同步运行;登录脚本缺省情况下,隐藏、非同步运行。 4 O& R6 `$ V$ j: j, I/ Y1 g8 V' m" I! _1 C; | (2)当用户退出、关闭计算机时,存在以下几种情况:退出脚本运行;关闭脚本运行。 & n, y1 v& H! R6 v ) i3 Z0 M { z2 n( U/ z注意:处理脚本缺省超时时间是10分种,如要调整时间,可以配置Computer Configuration\Administrative Templates\System\Logon\Maximum wait time中的组策略脚本的等待时间,改变后将影响所有运行脚本。 : l" F, Q- u+ O8 Q0 Q6 S1 P+ a, `* s 我们可以按下列步骤分配一个脚本:6 t1 w0 {( J) _% H0 t $ I. Z" W: A; b! @* |. W(1)打开组策略中合适的组策略,展开“计算机配置”或“用户配置”,展开“Windows Setting”,点击“脚本”按钮。 ' L5 o: Q, h) @/ e9 ?' O5 U0 ^: Q& f7 Q/ v ?# ~ (2)在脚本的“属性”对话框中,点击“添加”按钮,点击“浏览”按钮,选择需要分配的脚本后点击“打开”按钮,添加需要的脚本参数即可。8 {. d% W, j" ]' D% F , F! x2 D- f; I# R7 c. V, j6.利用组策略重定向文件夹 ) o+ ^; W! L. R& @6 V2 ^. L; H3 v0 ]! w: L4 U6 N! F 重定向文件夹,可以确保用户可以获得数据,不管他们在什么计算机上登录。 8 K R0 Y( n) t* W5 X9 T; A# _$ D! b. f% [ 可以重定向文件夹有:我的文档、应用程序数据、桌面和开始菜单,Windows 2000会自动建立这些文件夹。 ; R# ^. }' I: l* \$ F5 c3 @" ~ 5 @) d. I9 f7 I利用重定向文件夹,我们可以:不管用户从什么客户计算机上登录,都可以访问文件夹中的数据;文件夹中的数据集中存储,因此文件夹中的文件将更便于管理和备份;减少网络通信;重定向文件夹的文件,可以当用户登录到客户计算机上的时候,不使用存储空间存储这些文件。9 e0 }9 c; ], c+ Y! k5 V, o {& c & c/ j: x/ d: K 如果管理员在重定向文件夹的时候使用变量%Username%,那么Windows 2000将为每个用户在服务器上建立唯一的个人文件夹。按下列步骤重定向文件夹:8 _" j$ g8 W8 r2 C) E3 x $ d5 _; t+ P1 ~) A (1)在“组策略”对话框中点击“编辑”按钮。: Z; t2 h7 U. d2 K" v, s 3 q ^; C2 D, A (2)展开“用户配置→Windows Settings→文件夹重定向”节点。然后右击要重定向的文件夹名字,点击“属性”命令,然后提供目标路径和位置路径即可。/ G% Z- J$ k% X. G" L; U* I : Q/ c% {" s" q8 \7 y% Z3 B 7.利用组策略确保用户环境安全; K2 \7 ^2 |) I* o# ^ " K L# w+ X. O, M* G& j( w L域用户策略成为域成员的、基于Windows 2000的工作站或服务器的预设用户策略,例外的是组织单元定义另一个用户策略的时候,组织单元的用户策略设置影响到组织单元中任何计算机上的本地策略。而本地策略设置只在利用计算机本地用户登录时候应用。按下列步骤把安全模板引用到组策略中:7 R4 x8 g$ {6 }& a/ m , |+ w: g: [' ]; h5 V/ Y展开组策略中的“计算机配置→Windows Settings→安全设置”节点。右击“安全设置”,然后点击“引入策略”。选择需要引用的安全模板即可。 ' [' D# v, ]7 _, f! e, e+ n + P# F& ]% i ]/ m1 p6 m另一种应用安全策略的方式是为每台计算机配置安全设置,要配置安全设置,需要执行下列任务: 7 ^9 s0 \( `$ i, e# M3 z& w" }8 u& g; g 展开“计算机配置→Windows Settings→安全设置”节点。在策略属性对话框中,双击需要配置的安全设置。在“策略”选项卡上,通过选择三种状态的一种来配置安全设置:启用、禁用、未配置。3 I3 x+ D( |/ W/ d" @9 ?9 Y6 m$ U5 S . D( B- z* p' }; ?! w六、使用组策略管理软件 6 ]1 d& T* h1 ? t2 ~' ^1 \(一).使用组策略管理软件' o, P t) L n 管理软件的过程包括: : P* U7 G6 T) y. x8 g/ k, T4 S E" \ 预备:准备一个文件,以便应用程序能使用组策略布置。7 [, Y' x3 s, k# Y; N2 R9 C) \$ Y & y8 _- ?& i* Z( {' C+ M布置:管理员创建一个在计算机上安装软件,并将组策略链接到相应的活动类别容器的组策略对象。 " z4 _; ~. J3 `* ] 9 A: h4 K4 \% z4 `( M# p9 F维护:用新版本的软件升级软件或用补丁来重新布置软件。2 x/ m/ t. _: n $ |' E% y8 H# \! I) n w 删除:为消除不再使用的软件,从开始布置软件的组策略中删除软件包设置。 " d# _$ u$ R, O- ]# l# l5 H% m7 { b5 g 将软件分配给用户和计算机:9 j7 E& B; X. W) ^ 4 S" H" o, K3 j& t: ]. g% x在用户配置过程中,在用户登录时应用程序被通告,安装不会自动开始。这样可以节省了硬盘空间和时间。, j# M9 a& B, Z$ y - r J/ W' l8 h. w 在计算机配置过程中,当给计算机分配软件时,不会出现通告,软件被自动安装。可以确保相应的应用程序在那台计算机上总是可用的无论谁使用那台计算机。 ( h* {2 s; Y4 k/ w2 j0 @* B! E7 y & g4 x- Q' K1 s% @' f) u2.用户安装发布的软件0 e1 R4 ]* F0 X+ e7 i2 u, s 可以将软件分配给用户和计算机。分配软件包确保软件对于用户和计算机是可用的。分配软件确保用户需要的所有应用程序都安装到了他们的计算机上,用户下一次登录时,新安装软件会出现在他们的桌面上。当软件出现后,应用程序的开始菜单快捷方式和桌面图标也出现了。0 b: m* y4 Y i " p) I3 o3 Y) a; X7 ` 用户可以采用下面两种方法之一来安装发布的软件:, Y& B% z9 b4 k : r! ?% ^1 j( ~ q& f1 f& Q (1)使用控制面板双击“添加/删除程序”,选择需要的应用程序,点击“安装”按钮。6 U% Z! ~% T# I3 ?0 p$ v ! N, r5 ]+ h" m+ I(2)使用文档激活的方法。当应用程序发布在活动类别中时,它所支持的文档扩展文件名在活动类别中注册了, 如果双击一个未知类型文件,计算机就会安装它。0 @# F' \& g. d, q1 H 7 C; V/ Q/ H2 U3.布置软件8 ~6 \7 f* m) u4 P 按下列步骤使用组策略布置软件:+ j1 m; R* |6 L: P/ [ * r" `- |1 u+ M(1)根据软件是分配给用户还是计算机,在“用户配置”或“计算机配置”中创建或编辑一个组策略。4 k T% T/ [* s) q5 n$ k( ^4 i & C% R* U0 G; d; z* k$ O+ E (2)布置“软件设置”,右击“软件安装”,选择“新建→程序包”命令,当“文件打开”对话框出现时,选定包文件,点击“打开”按钮。; |$ T6 J& z( _- K1 U9 t( U / @* E7 ^5 E/ F (3)在“布置软件”对话框中,选定一种布置方法即可。 / G1 S: C8 e9 S* o: n& |& \% ~; T/ Q. x2 \5 ]* ~* S* y 改变一个软件包的软件布置选项,执行下列步骤:& Z; h* [0 K. [$ P7 ^ 1 ?6 }( i1 n# E) G/ x (1)在软件安装中,右击布置的包,然后点击“属性”命令。 " Y, V* c5 U4 m2 o$ w3 X2 _4 U( G8 r9 [$ N (2)在应用程序的“属性”对话框中,点击“布置”选项卡,设置下表描述的选项的任意组合。(^60090102h^) n* {0 I9 v' h8 D6 t1 [+ Z& X+ [3 l% G9 G# M6 X 设置软件安装默认选项,请执行下列步骤: 0 V- p* r' ]" f' J5 x' s ( d9 `6 U9 \" N5 J$ ~$ J# |1 m(1)根据软件是要分配给用户还是计算机,或是发布,在“用户配置”或“计算机配置”中创建或编辑一个组策略。, f/ u1 S8 v7 p7 W( [# | h ! l4 c2 ? Z, ^8 k(2)布置“软件设置”,右击“软件安装”,点击“属性”按钮。% ], D6 L* ?" ^: b3 m. n 7 W+ p' M) U( s. o+ J, s+ Q(3)在“软件安装属性”对话框中,点击“常规”选项卡,设置下表描述的选项的任何组合。(^60090102i^)(^60090102j^) - Z; k) |* n) W: e' s ; p# Y/ k/ [ z+ x' i& n可以布置一个应用程序的几个不同配置并且控制如何分配或发布应用程序。使用软件修改,执行下面步骤: 2 C6 S+ ]8 c, ^, ?- n x0 m: L% k% z (1)在将一个新包添加到一个组策略中或在此包布置前,打开应用程序包的“属性”对话框,点击“修改”选项卡。点击“增加”按钮。 / x, ?% L' z2 w- u4 B# Q# z h P( V" a( @. [8 F (3)在“打开”对话框中,选择修改(.mst)文件的路径和文件名,点击“打开”按钮即可。: t. G* l2 Y/ r: j5 { 7 N% f* K! w- z& p 4.创建软件类别 # h0 f8 l1 f7 i. g6 O7 `创建软件类别,执行下面步骤: . i8 r8 I5 s/ h3 E- I$ L+ `# k 3 p. S: q# ]+ s# z7 _(1)根据软件是要分配给用户还是计算机,或是发布,在“用户配置”或“计算机配置”内创建或编辑一个组策略。 5 v" C$ Q% u8 U5 ?4 j% }5 g% n8 k2 h. W (2)布置“软件设置”,右击“软件安装”,然后点击“属性”按钮,在打开的对话框中点击“类别”选项卡。 6 ]1 p# P* I9 Z* U7 Q; j: z1 Z7 \2 f (3)点击“增加”、“修改”或“删除”按钮创建并编辑类别名。 / q" c r2 w1 o / N+ ]0 C: Q- X5 M) n" j管理员还可以控制哪个应用程序首先和文件扩展名关联。修改文件扩展名优先权,执行下列步骤: : S, m( c! M& ^; F' x6 ?: C$ N- Z- S [& K (1)打开用于布置应用程序的组策略。布置“用户配置”,然后打开软件安装的“属性”对话框。 6 H+ ^. I7 o: j( A* t$ L% o; D7 |( b* w1 y2 U (3)在软件安装的“软件安装属性”对话框中,点击“文件扩展”选项卡,单击(向上)或(向下)来设置优先次序。 / D* r! w% ~6 M6 r( _$ i6 V, N' U0 J! H* y 5.维护布置的软件3 a: v* p8 Y z3 l. ]! c 维护布置的软件在于:升级布置的软件、重新布置软件。升级布置的软件:可以进行强制升级或可选升级。强制升级用于强迫用户升级到当前最新的版本。可选升级用于允许用户同时使用一个程序的两个版本。为布置一个升级,执行下列步骤:: n1 g! m) U0 F- B; I, S - o% r& j% d6 I* D(1)布置高一级版本软件。. t% L' y1 K5 R+ ?; y# N1 X / ?" w; l: e9 H6 ~' b+ y. V; r# q (2)打开“软件安装”,右击高一级版本,然后点击“属性”按钮。在包文件的“属性”对话框中,点击“升级”选项卡。在“Packages that this package will upgrade”部分,点击“增加”按钮,选定低版本应用程序。 : R. [" @# w0 H( U9 u3 A) N2 A- g4 @& h& r" W" f9 N8 H0 l (3)选择升级类型:为进行强制升级,选定“现存软件必须升级”复选框;为进行可选升级,取消选定“现存软件必须升级”复选框。0 ]$ I* C6 }* }6 a 5 j1 W4 X- ] w! b0 n6 j- ` |6.删除布置的软件 , j( u5 Z+ x+ L) _& F0 S N. R删除布置的软件,执行下列步骤: : A# q0 R: Z6 A6 U' T! ^+ C; _. @$ f6 b; @$ s1 Q) r (1)打开原来用于布置软件的组策略。在“软件安装”中,右击包名,选择“所有任务→删除”命令。 ; r/ \7 o/ b) r# j * ~) s9 S% O! \& L(2)在“删除软件”对话框中,选择下表描术的选项中的一项,然后单击“确定”按钮。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值