0

ワークステーションのローカル Driverstore にあるすべてのドライバーを列挙し、プリンターの追加ダイアログなどでユーザーに表示される名前である「フレンドリ名」を取得する方法を探しています。具体的には、プリンターのような特定のクラスのデバイスのみをリストしたいと思います。

可能であれば、Windows Scripting Host 経由の vbscript または jscript。または、コマンド ライン ユーティリティの出力を解析しても問題ありません。

4

1 に答える 1

0

私は専門家ではありませんが、Microsoft Systems Management Server (SMS)を使用している場合にのみ、このタスクをスクリプト化できるようです。これはSMS_Driver WMI クラスを提供します。私が理解している限りでは、これを使用して Driver Store 内のドライバーをクエリできます。以下のスクリプトは、これを行う方法のアイデアを提供するはずです。(免責事項: 私は SMS を持っていないので、このスクリプトが正しいことを証明できません。バグに注意してください :)

On Error Resume Next

strComputer = "."   ' Computer name. Dot means local computer

' Connect to the SMS Provider
Set oWMIService = GetObject("winmgmts:" & _
    "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sms\site_XXX") ' Replace XXX with your site code (see notes below)
If Err.Number <> 0 Then
    WScript.Echo "WBemServices connection failed. Error " & Err.Number & ": " & Err.Description
    WScript.Quit
End If

' Get all device drivers
Set colDrivers = oWMIService.ExecQuery("SELECT * FROM SMS_Driver")

' List properties of each driver
For Each objDriver In colDrivers
    WScript.Echo _
      "Name: "        & objDriver.LocalizedDisplayName & vbNewLine & _
      "Class: "       & objDriver.DriverClass          & vbNewLine & _
      "Model name: "  & objDriver.ModelName            & vbNewLine & _
      "Description: " & objDriver.LocalizedDescription & vbNewLine & _
      "Version: "     & objDriver.DriverVersion        & vbNewLine & _
      "Provider: "    & objDriver.DriverProvider       & vbNewLine & _
      "Path: "        & objDriver.ContentSourcePath    & vbNewLine & _
      "File: "        & objDriver.DriverINFFile        & vbNewLine
Next

ノート:

  • サイト コードは、[管理ツール] -> [コンピューターの管理] -> [サービスとアプリケーション] -> [WMI コントロール] -> [プロパティ] -> [セキュリティ] の Root\sms ノードの下にある可能性があります。
  • スクリプトは、すべてのドライバー クラスを一覧表示することになっています。特定のクラス (プリンター ドライバーなど) のみが必要な場合は、クエリを次のように変更します。
    SELECT * FROM SMS\_Driver WHERE DriverClass=_insert\_proper\_DriverClass\_here_
    トリックを行う必要があります。
于 2009-06-05T08:53:49.533 に答える