首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

VBScript 修改聯想筆電 BIOS 密碼:WMI 實作與風險提醒

     編輯:更多程式設計知識

背景

聯想筆電提供 WMI 介面 Lenovo_SetBiosPassword 允許程式化設定 BIOS 密碼。本文示範 VBScript 呼叫該方法,並說明相關風險與限制。

完整程式碼

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\WMI")

' 取得類別實例 (InstanceName 視機型而異,需先用 WBEMTEST 確認)
Set objShare = objWMIService.Get("Lenovo_SetBiosPassword.InstanceName='ACPIPNP0C141_0'")

' 準備輸入參數
Set objInParam = objShare.Methods_("SetBiosPassword").inParameters.SpawnInstance_()
objInParam.Properties_.Item("Parameter") = "test"  ' 新密碼

' 執行方法
Set objOutParams = objWMIService.ExecMethod( _
    "Lenovo_SetBiosPassword.InstanceName='ACPIPNP0C141_0'", _
    "SetBiosPassword", objInParam)

WScript.Echo "Return: " & objOutParams.Return

關鍵步驟解析

  1. 連線至 root\WMI 命名空間 (非標準 cimv2)。
  2. 使用 InstanceName 精確定位 BIOS 密碼管理類別實例 (各機型不同)。
  3. 透過 Methods_ 取得方法定義,建立 InParameters 實例並填入新密碼。
  4. 呼叫 ExecMethod 執行,回傳 OutParameters 中的 Return 值判斷成敗。

如何確認 InstanceName?

  1. 執行 wbemtest.exe (Windows 內建)。
  2. 連線 root\WMI,開啟類別 Lenovo_SetBiosPassword。
  3. 列舉實例,觀察 InstanceName 屬性值。

⚠️ 重要風險提醒

  • 永久鎖定風險:錯誤密碼或中斷可能導致 BIOS 永久鎖定,需硬體重置 (拔電池/跳線)。
  • 僅限聯想特定機型:非通用標準,其他品牌無此 WMI 類別。
  • 需管理員權限:腳本必須以系統管理員身分執行。
  • 測試環境優先:切勿在生產機器直接嘗試,建議先於虛擬機或測試機驗證。

參考文獻

結語

WMI 提供強大的硬體管理能力,但 BIOS 級操作風險極高。實務上建議透過廠商官方工具 (如 Lenovo Vantage、ThinkPad Setup) 設定密碼,僅在自動化部署大量裝置時,經充分測試後謹慎使用腳本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved