問:
您好,指令碼專家!在使用 Windows 資源管理員串連到遠端電腦時,可以在“詳細資料”窗格中看見該電腦的說明。如何更改電腦的說明?
-- GF
答:
您好,GF。只是為了確保每個人都清楚我們談論的內容,我們不會談論 Active Directory 中的“說明”屬性,而是談論在整個網路範圍內廣播的電腦說明。(如果您真正想知道的是如何更改 Active Directory 中的“說明”屬性,請參閱此“您好,指令碼專家!”專欄。)
例如,在 Windows XP 中,您可通過執行以下操作來查看電腦說明:按右鍵“我的電腦”,單擊“屬性”,然後查看“系統屬性”對話方塊的“電腦名稱”選項卡中的內容:
如您所述,如果使用 Windows 資源管理員串連到該電腦,則該說明還會出現在“詳細資料”窗格中:
我們也認為這很令人興奮。
那麼如何更改電腦說明呢?是這樣,您可以啟動 Regedit.exe,然後手動更改註冊表值 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\lanmanserver\parameters\srvcomment。或運行與以下指令碼類似的指令碼即可:
複製代碼 代碼如下:Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objRegistry = GetObject _
("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "System\CurrentControlSet\Services\lanmanserver\parameters"
strValueName = "srvcomment"
strDescription = "Description changed programmatically"
objRegistry.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strDescription
這當然容易啦;相處了這麼長時間,您真的認為我們會突然開始為您的問題提供複雜而又費解的答案嗎?我們先是定義一個名為 HKEY_LOCAL_MACHINE 的常量並將其值設定為 &H80000002;過一會兒,我們將使用此常量來告訴指令碼我們要處理的註冊表登錄區。然後,我們串連到 WMI 服務(在本例中,它位於本機電腦上,不過修改遠端電腦上註冊表的操作也差不多同樣簡單),並綁定到 StdRegProv 類。(而該類(正如我們所不厭其煩地告訴大家的)恰好位於 root\default 命名空間中。)
接下來,我們為三個變數賦值:
strKeyPath = "System\CurrentControlSet\Services\lanmanserver\parameters"
strValueName = "srvcomment"
strDescription = "Description changed programmtically"
變數 strKeyPath 表示註冊表 HKEY_LOCAL_MACHINE 部分內的路徑;strValueName 表示要更改的註冊表值 (srvcomment);還有 strDescription,沒錯:strDescription 表示新的電腦說明。您的觀察力很敏銳。
注意:我們想要說的是,你們在這方面要比我們強得多,但我們不想讓經理對此有任何瞭解。的確如此:對於一位 Microsoft 經理來說,瞭解情況將是最為重要的!
現在我們所要做的就是調用 SetStringValue 方法,同時將 HKEY_LOCAL_MACHINE 和我們的三個變數作為方法參數進行傳遞:
objRegistry.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strDescription
像這樣的指令碼真的確實會使生活變得有意義,不是嗎?
注意:請注意,即使是在註冊表中進行此更改,新說明可能仍要在電腦重新啟動後才會生效。這隻不過是一個需要注意的地方。