none
Erkennung von CD/DVD Brenner via Script RRS feed

  • Frage

  • Moin,

    im Zuge unserer automatischen Installation habe ich die Notwendigkeit, aus einem Batch Script zu erkennen, ob ein CD/DVD Brenner im PC vorhanden ist und installiere nur dann entsprechende Brennsoftware. Nur wie erkennt man das?
    Zu XP Zeiten hab ich einfach überprüft, ob der IMAPI Dienst aktiv war. Den gibt es seit Vista nicht mehr. Wie kann ich bei Vista und 7 vorgehen?

    cu, Ingo
    Freitag, 29. Januar 2010 15:01

Alle Antworten

  • Hallo Ingo,

    nutze WMI und dort die Klasse Win32_CDROMDrive und die Eigenschaft Capabilities. Wert 4 bedeutet Supports Writing und das willst du ja erkennen.

    http://msdn.microsoft.com/en-us/library/aa394081(VS.85).aspx

    Gruß
    André

    "A programmer is just a tool which converts caffeine into code" CLIP- Stellvertreter http://www.winvistaside.de/
    Samstag, 30. Januar 2010 17:07
  • Hättest du da noch einen Codeschnipsel für, den ich in einer Batchdatei einsetzen kann? Ich hab bisher keinen blassen Schimmer von WMI und wie man dort irgendwelche Klassen nutzen kann.
    cu, Ingo
    Sonntag, 31. Januar 2010 21:17
  • Hallo Ingo,

    dieser VBScript Ausschnitt sollte dir als Grundgerüst dienen (ist von einem Tool generiert)

    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
    Set colItems = objWMIService.ExecQuery( _
        "SELECT * FROM Win32_CDROMDrive",,48) 
    For Each objItem in colItems 
        Wscript.Echo "-----------------------------------"
        Wscript.Echo "Win32_CDROMDrive instance"
        Wscript.Echo "-----------------------------------"
        If isNull(objItem.Capabilities) Then
            Wscript.Echo "Capabilities: "
        Else
            Wscript.Echo "Capabilities: " & Join(objItem.Capabilities, ",")
        End If
        If isNull(objItem.CapabilityDescriptions) Then
            Wscript.Echo "CapabilityDescriptions: "
        Else
            Wscript.Echo "CapabilityDescriptions: " & Join(objItem.CapabilityDescriptions, ",")
        End If
        Wscript.Echo "Caption: " & objItem.Caption
    Next

    Das führt eine WMI Abfrage durch und gibt eine Collection von gefundenen Laufwerken zurück. Diese werden durchgegangen und wenn die Fähigkeiten vorhanden sind werden die Werte (Capabilities und die Übersetzungen als Name) ausgegeben. Caption gibt noch den Namen vom Laufwerk aus.

    Du musst einfach bei Capabilities eine if Capabilities = 3 Abfrage einbauen und dann eine Variable auf true setzen.

    Reicht dir das?

    Gruß
    André

    "A programmer is just a tool which converts caffeine into code" CLIP- Stellvertreter http://www.winvistaside.de/
    Sonntag, 31. Januar 2010 22:08
  • Danke, ich werde mich da mal durchkämpfen. VBScript ist bisher so gar nicht meine Welt, ich bastle zwangsweise ein wenig Batch (Login-Script) und alles sonst an Programmierung ist 15 Jahre her oder so.... ;-)

    cu, Ingo
    Sonntag, 31. Januar 2010 22:50
  • Hallo Ingo,
    In welcher Sprache willst du es haben? Welche (Script)sprache nutzt du denn?

    André

    "A programmer is just a tool which converts caffeine into code" CLIP- Stellvertreter http://www.winvistaside.de/
    Sonntag, 31. Januar 2010 23:07
  • Im Prinzip arbeite ich rein mit Batch, also CMD bzw. TakeCommand. Ich bräuchte also irgendwas, was aus einem Batch aufrufbar ist und mir z.B. einen Errorlevel zurückliefert, ob irgendein Brenner oder eben nicht.
    cu, Ingo
    Sonntag, 31. Januar 2010 23:25
  • Hi,

    Am 31.01.2010 22:17, schrieb Ingo Böttcher:
    > Hättest du da noch einen Codeschnipsel für, den ich in einer Batchdatei
    > einsetzen kann?

    Batch? -> wmic.exe

    wmic cdrom | find /i "supports writing"
    if errorlevel 0 ...

    Tschö
    Mark
    --
    Mark Heitbrink - MVP Windows Server - Group Policy

    Homepage: www.gruppenrichtlinien.de - deutsch
    Discuss : www.freelists.org/list/gpupdate
    Montag, 1. Februar 2010 09:42