探討Windows下登錄工具KiXtart KiXtart是一個優秀的高級登錄腳本工具,遠比Windows NT系列操作系統內建的、DOS批命令風格的處理器強大,例如,KiXtart允許訪問NT SAM或系統信息,操作文件,修改註冊表,或者執行OLE自動化任務。KiXtart能夠根據用戶標識和所屬群組靈活地調用腳本和子過程,必要時我們可以 用一個腳本來調用其他的腳本。這些功能方便了腳本的集中控制,簡化了腳本代碼的維護和調試。 一、配置KiXtart運行環境 配置一個基本的KiXtart運行環境很簡單。KiXtart是Microsoft Windows 2000 Resource Kit的一部分,最新版可以從https://www.kixtart.org下載。要運行KiXtart腳本,只要在所有提供驗證服務的服務器上,將 KiXtart執行文件(kix32.exe)放到\neglogon共享目錄就可以了。 但對於Windows 9x系統,KiXtart還需要額外的配置才能與KiXtart遠程過程調用服務通信,即必須在每一個域控制器(DC)上安裝RPC服務,再把 KiXtart的輔助DLL(kx95.dll、kx16.dll、kx32.dll)和kix32.exe文件一起放入\netlogon共享服務。 KiXtart的下載包帶有RPC服務的執行文件kxrpc.exe。 二、編寫腳本 KiXtart 腳本文件其實就是普通的文本文件,可以用記事本或其他文本編輯器編輯,但文件的擴展名一般是.kix。如果要在用戶登錄期間運行某個KiXtart腳本, 只要在該用戶帳戶的配置文件中設置登錄腳本選項即可。用不帶參數的形式調用kix32.exe時,KiXtart將尋找和運行默認的腳本文件 kixtart.kix,我們可以在kixtart.kix腳本中調用其他腳本,將kixtart.kix作為一個主控腳本使用。 KiXtart具有豐富的腳本語言功能,包括控制結構、命令、函數、變量、數組等。雖然說不一定只有專業的開發者才能使用KiXtart,但瞭解一些基本的編程知識還是有好處的。 ■ 控制結構 控制結構是控制腳本運行流程的命令,例如根據一定的條件允許某些命令或其他腳本運行。假設在一個所有用戶都運行的腳本中,我們只想讓某個用戶運行特定的腳本代碼,可以加入下列If Else Endif結構: If @USERID = "testuser" Call "testusers.kix" EndIf 每一個用戶都會運行上面的登錄腳本,但只有testuser用戶會調用testusers.kix腳本。其他KiXtart控制結構還包括: ? Do...Until:反覆運行一個代碼片斷,直至指定的條件為真。 ? While Loop:當指定的條件為真時,反覆地運行一個代碼片斷。 ? For Each:對於數組或對象中的每一個元素,分別運行一次代碼片斷。 ? For...Next:將一個代碼片段運行一定的次數。 ■ 變量 變量是一種用描述性名稱來存儲信息的機制,存儲在變量中的數據可以隨時修改。在KiXtart中,所有變量必須以「$」符號開頭。 就像其他專業的編程語言一樣,KiXtart變量也有一定的作用範圍。變量的作用範圍決定了當一個腳本調用子過程或其他腳本時,被調用的子過程或腳 本是否能夠訪問前者定義的變量。如果為變量指定了錯誤的作用範圍,很可能導致腳本錯誤,或出現不可預料的運行結果。KiXtart變量的作用範圍有兩種: Global,這種類型的變量可以被所有腳本程序訪問和修改;Local,這類變量只能在聲明它的子過程或腳本之內訪問。 KiXtart變量可以用多種方式聲明: ? 隱式聲明:在腳本中直接將一個值賦予一個變量。隱式聲明的變量具有全局作用範圍,所有腳本程序和子過程都可以訪問它。 ? 顯式聲明:首先定義變量,然後才給它賦值。有兩個命令可以定義變量,即Dim和Global。Dim定義的變量作用範圍是本地(Local),只能在定義它的子過程或腳本之內訪問;Global定義的變量是全局變量。 ■ 宏 在KiXtart中,宏的作用是從運行腳本的系統或網絡返回信息。KiXtart的宏類似於一種環境變量,不要將它與Word、Excel或 Word Perfect的宏混淆。KiXtart的宏不是程序,用戶不能修改它們。所有的宏都以@字符開頭,常用的宏包括: ? @USERID:返回當前的用戶。 ? @LSERVER:返回為當前登錄進程驗證身份的服務器。 ? @WKSTA:返回正在運行腳本的工作站名稱。 ? @TIME:返回系統時間。 ■ 命令 命令執行一個動作。下面列出了幾種常用的命令: ? Use:映射驅動器,或者連接到其他網絡資源,例如打印機。 ? Shell:裝入並運行一個程序。在KiXtart腳本程序中,我們不能直接使用標準的Windows批命令,所以KiXtart提供了Shell命令讓 我們調用標準的批命令和外部程序。被調用的外部程序可以是任何16位或32位Windows程序。用Shell命令調用外部程序時,KiXtart腳本會 暫停執行,等待外部程序結束。所以調用外部程序時務必慎重:如果被調用的程序掛起,腳本也會停止響應。 ? Copy:複製一個文件。 ■ 函數 函數類似於命令,不同之處在於函數會返回數據。通常情況下,我們要把函數的返回值保存到某個變量。有時函數的返回值表示動作的執行狀態。例如, ADDKEY()函數將一個註冊鍵加入到註冊表,它的返回值表示加入註冊鍵的操作是否成功。又如,UCASE()函數將字符串轉換成大寫,例如UCASE ("hello")的返回值是「HELLO」。 除了大多數編程語言都提供的標準函數之外,KiXtart專門提供了許多面向登錄操作 的函數,INGROUP()函數就是一個例子——它能夠判斷登錄的用戶是否屬於特定的組。例如,下面的代碼判斷當前用戶是否屬於Finance組,如是, 則刪除當前的驅動器映射「G:」,然後再將「G:」映射到Finance部門的共享目錄。 If INGROUP("Finance") Use g: /delete Use g: "\\servername\financeshare" EndIf ■ 用戶定義函數 KiXtart允許創建用戶定義函數(UDF),極大地改進了登錄腳本的靈活性。我們可以利用UDF機制創建公用的腳本模塊,簡化腳本開發。 KiXtart網站提供了大量實用腳本範例,包括計算和提示磁盤容量/配額、比較目錄、配置打印機、建立文件關聯、檢查病毒庫版本、搜索文件、配置環境變量,等等,有興趣的讀者可以參看,地址是https://home.wanadoo.nl/scripting/index-kix-scripts.htm 如果您覺得本篇蒐集的資訊對您有用, 請點擊下方的廣告連結支持 .
- Dec 30 Fri 2011 02:21
-
探討Windows下登錄工具KiXtart
請先 登入 以發表留言。