Schlagwort-Archive: devcon

Monitor beim Anmelden per devcon.exe einschalten

Problem:
Ich habe an meinem PC zwei Monitore angeschlossen. Einen über DVI und einen über Display-Port.
Nach jedem Neustart wurde ein Monitor nicht erkannt und ich musste manuell den Gerätemanager öffnen und den zweiten Monitor suchen lassen.
Dieser wurde dann erst beim zweiten oder dritten Anlauf erkannt. Sehr nervig, wenn man seinen PC jeden Abend ausschaltet 🙂

Lösung:
Die Lösung besteht aus zwei Teilen: 1. ein Batch und 2. eine geplante Aufgabe unter WIndows7.

BEVOR ihr das Batch testet, müsst ihr euch die passende devcon.exe für Windows7 holen.
Die für WindowsXP funktioniert hier nicht mehr! Siehe hier!

Hier jetzt das kommentierte Script:

@ECHO OFF
rem ———————————————————————-
::
::  monitor-devcon.bat
::  Bikerpete
::  https://linuxpeter.de
::  take a look at
::  http://www.battlefieldsecrets.com/
rem ———————————————————————-
::  History
::  V1.0 – 2013-04-12  initial version
rem ———————————————————————-
::
rem ———————————————————————-
::    PREREQUISITES
::    Needs devcon for Win7 – download the Windows Driver Kit (WDK)
::    Use 7zip to open the ISO file
:: There is a folder WDK, that contains three cab-files naed with a „setuptools_“ prefix.
::    extract setuptools_x86fre_cab001.cab (23-bit), setuptools_x64fre_cab001.cab (64bit) or setuptools_ia64fre_cab001.cab (itanium)
:: copy _devcon.exe_00000_ to a warm and dry place and rename it to devcon.exe
:: german manual: http://www.heise.de/ct/hotline/devcon-fuer-Windows-7-1201437.html
rem ———————————————————————-

rem ———————————————————————-
::  CONFIG
rem ———————————————————————-
::Configure section to fill variables
::Nothing needed for this script 🙂

rem ———————————————————————-
::  MAIN
rem ———————————————————————-
:monitorcheck
FOR /F „tokens=1“ %%i IN (‚devcon find *Monitor*^|FIND /i „found“‚) DO @SET MONITORS=%%i
IF %MONITORS%==1 GOTO rescan
GOTO norescan

:norescan
ECHO „Norescan – Gefundene Monitore=%MONITORS%“
ping localhost > NUL
GOTO ende

:rescan
color cf && title ***** RESCAN NOTWENDIG *****
CLS
ECHO „Rescan notwendig – Gefundene Monitore=%MONITORS%“
ping localhost > NUL
devcon rescan
GOTO monitorcheck
rem ———————————————————————-
::  END OF MAIN
rem ———————————————————————-
rem ———————————————————————-
::  the end of all
rem ———————————————————————-
:ende
ECHO „aus und weg! :-)“
ping localhost > NUL
EXIT
rem ———————————————————————-
::  EOF
rem ———————————————————————-

Das Batch könnt ihr z.B. als monitor-devcon.bat speichern. Ich habe mir angewöhnt unter C:\ einen Ordner für Scripte anzulegen (C:\Batch). Dann findet man seine Scripte auch einfacher wieder. 🙂

Jetzt fehlt noch die geplante Aufgabe (früher der geplante Task):

Start –> taskschd.msc öffnet das Fenster für die Aufgabenplanung.
Um die Sache übersichtlicher zu halten, könnt ihr euch nun zunächst in der Aufgabenplanungsbibliothek einen eigenen Ordner anlegen, in dem ihr eure eigenen Aufgaben anlegt.

Jetzt erstellt ihr eine neue Aufgabe für das Script. Hier kurz die Eigenschaften:
Allgemein:
Name: Monitorcheck
Beschreibung: Prüft die Monitore
Sicherheitsoptionen: Unabhängig von der Benutzeranmeldung ausführen + Kennwort nicht speichern. Die Aufgabe greift nur auf lokale Resourcen zu.
Mit höchsten Berechtigungen ausführen.

Trigger:
Aufgabe starten: Beim Start
Verzögern für 30 Sekunden
Haken bei Aktiviert

Aktionen:
Aktion: Programm starten
Programm/Skript: C:\Batch\Monitor\monitor-devcon.bat (bzw. Pfad zu deiner Batch :-))

oder ihr importiert diese Aufgabe einfach. Rechtsklick auf die Aufgabenplanungsbiliothek oder einen der Unterordner und per „Aufgabe importieren …“ reinholen.

Folgenden Text als Monitorcheck.xml speichern und den Benutzer „DOMAIN\user“ entsprechend anpassen:

<?xml version=“1.0″ encoding=“UTF-16″?>
<Task version=“1.3″ xmlns=“http://schemas.microsoft.com/windows/2004/02/mit/task“>
<RegistrationInfo>
<Date>2013-04-12T07:32:01.953585</Date>
<Author>DOMAIN\user</Author>
<Description>Prüft, ob beide Monitore angeschlossen sind. Benötigt devcon für Win7!!!</Description>
</RegistrationInfo>
<Triggers>
<BootTrigger>
<Enabled>true</Enabled>
<Delay>PT30S</Delay>
</BootTrigger>
</Triggers>
<Principals>
<Principal id=“Author“>
<UserId>DOMAIN\user</UserId>
<LogonType>S4U</LogonType>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>P3D</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context=“Author“>
<Exec>
<Command>C:\Batch\Monitor\monitor-devcon.bat</Command>
</Exec>
</Actions>
</Task>

Das wars! Bei jedem Neustart prüft das Script jetzt per devcon, ob im System zwei oder mehr Monitore bekannt sind. Sollte das nicht der Fall sein, führt devcon einen rescan nach neuer Hardware durch und wiederholt die Prüfung.
Sind mindestens zwei Monitore gefunden, beendet sich das Script.
Sollte auch bei 0 Monitoren funktionieren, aber wer will das schon 🙂

Devcon für Windows 7 (32 und 64 bit)

Nach dem Umstieg von Windows XP auf Windows 7 funktionieren bei vielen Anwendern die beliebten „devcon“-scripte nicht mehr.
Ursache ist die Tatsache, dass das alte devcon, das man unter WindowsXP verwendet hat, unter Windows7 nicht mehr funktioniert.
Es läßt sich zwar noch ausführen, aber man erhält keine brauchbaren Ergebnisse.

Lösung:
Es gibt eine Version, die unter WIndows7 funktioniert. Leider kann ich diese hier aus rechtlichen Gründen nicht bereitstellen, aber ich kann eine Anleitung posten 🙂

1. Download des Windows Driver Kit (WDK) für Windows 7
Download-Link

2. Entpacken des ISO-files mit 7-zip

3. Öffnen des Ordners „WDK“

4. Dort gibt es jetzt drei Dateien, die jeweils mit „setuptools_“ beginnen.
Einfach die passende für dein Betriebssystem raussuchen, z.B. setuptools_x64fre_cab001.cab für 64-bit (oder x86 für 32-bit).
Solltest du unsicher sein, kannst du entweder einfach die 32-bit Version nehmen (die sollte immer gehen) oder die „Windows-Taste“ und „Pause“ gleichzeitig drücken, um dich zu vergewissern.

5. Jetzt die passende *.cab per Doppelklick öffnen und die „_devcon.exe_00000_“ rauskopieren. Diese Datei kann man nun nach devcon.exe umbenennen und z.B. nach C:\Windows\SysWOW64\ oder C:\Windows\system32 kopieren.
Dort wird die devcon.exe nämlich später ohne Pfadangabe gefunden 🙂