CD-Laufwerk-Jux
Der Klassiker unter den harmlosen Streichen: Das CD/DVD-Laufwerk fährt auf und zu. Entweder sofort vorführen oder als Streich unsichtbar starten – dann geht es nach 30 Sekunden fünfmal in zufälligen Abständen los, danach beendet es sich von selbst. Ohne Laufwerk passiert nichts.
SHA-256:
42a62a1a7634295986fdc8dea9108224406a9233869ee1859c430d2662031419 Code
So sieht die Datei aus, die Sie herunterladen (99 Zeilen). Die Kommentare oben im Skript erklären, was es tut.
<# : Friederich-IT - CD-Laufwerk-Jux
@echo off
setlocal
chcp 65001 >nul
title CD-Laufwerk-Jux - Friederich-IT
set "FIT_SELF=%~f0"
powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "iex ([IO.File]::ReadAllText($env:FIT_SELF,[Text.Encoding]::UTF8))"
exit /b %errorlevel%
#>
# ==========================================================================
# CD-Laufwerk-Jux Version 2.0, Oktober 2026
# https://friederich-it.de/downloads
#
# Der Klassiker unter den harmlosen Streichen: Das CD/DVD-Laufwerk
# fährt auf und wieder zu.
# [1] Vorführen: jetzt sofort, Anzahl wählbar
# [2] Streich: startet unsichtbar nach 30 Sekunden, fährt 5-mal in
# zufälligen Abständen auf und zu und beendet sich dann
# von selbst. Kein Dauerlauf, keine Prozessorlast.
# Ohne CD/DVD-Laufwerk passiert nichts. Braucht keinen Media Player.
# Notebook-Schlitzlaufwerke und manche Schubladen lassen sich nur öffnen.
# ==========================================================================
$ErrorActionPreference = 'Stop'
try { [Console]::OutputEncoding = [Text.Encoding]::UTF8 } catch {}
Add-Type -Namespace FIT -Name Mci -MemberDefinition @'
[DllImport("winmm.dll", CharSet = CharSet.Unicode)]
public static extern int mciSendStringW(string cmd, System.Text.StringBuilder ret, int len, IntPtr hwnd);
'@
function Invoke-Mci([string]$befehl) { return [FIT.Mci]::mciSendStringW($befehl, $null, 0, [IntPtr]::Zero) }
function Move-Laufwerk([string]$lw, [bool]$auf) {
$alias = 'fitcd' + $lw.TrimEnd(':')
if ((Invoke-Mci "open $lw type cdaudio alias $alias") -ne 0) { return $false }
if ($auf) { [void](Invoke-Mci "set $alias door open wait") } else { [void](Invoke-Mci "set $alias door closed wait") }
[void](Invoke-Mci "close $alias")
return $true
}
function Start-Runde([string[]]$laufwerke) {
foreach ($lw in $laufwerke) { [void](Move-Laufwerk $lw $true) }
Start-Sleep -Milliseconds 1500
foreach ($lw in $laufwerke) { [void](Move-Laufwerk $lw $false) }
}
$laufwerke = @(Get-CimInstance Win32_CDROMDrive | Where-Object { $_.Drive } | ForEach-Object { $_.Drive })
if ($env:FIT_CD_STREICH -eq '1') { # unsichtbarer Streich-Modus
if ($laufwerke.Count -eq 0) { exit }
$zufall = New-Object System.Random
Start-Sleep -Seconds 30
for ($i = 0; $i -lt 5; $i++) {
Start-Runde $laufwerke
if ($i -lt 4) { Start-Sleep -Seconds ($zufall.Next(10, 41)) }
}
exit
}
Write-Host ''
Write-Host ' CD-Laufwerk-Jux' -ForegroundColor Cyan
Write-Host ' ===============' -ForegroundColor Cyan
Write-Host ''
if ($laufwerke.Count -eq 0) {
Write-Host ' Kein CD/DVD-Laufwerk gefunden - dieser PC ist vor dem Streich sicher.' -ForegroundColor Yellow
Write-Host ''
Write-Host ' Taste drücken ...' -ForegroundColor DarkGray
[void][Console]::ReadKey($true)
exit
}
Write-Host (' Gefundene Laufwerke: ' + ($laufwerke -join ', '))
Write-Host ''
Write-Host ' [1] Jetzt vorführen'
Write-Host ' [2] Streich: unsichtbar in 30 Sekunden, 5 Runden, beendet sich selbst'
Write-Host ' [0] Abbrechen'
Write-Host ''
Write-Host ' Auswahl: ' -NoNewline
$k = [string][Console]::ReadKey($true).KeyChar
Write-Host $k
switch ($k) {
'1' {
$e = Read-Host ' Wie oft? (Enter = 3)'
$anzahl = 3
if ($e -match '^\d{1,2}$') { $anzahl = [math]::Max(1, [math]::Min(20, [int]$e)) }
Write-Host ' Los geht''s ... (Abbrechen mit einer beliebigen Taste)' -ForegroundColor Yellow
for ($i = 1; $i -le $anzahl; $i++) {
if ([Console]::KeyAvailable) { [void][Console]::ReadKey($true); break }
Write-Host " Runde $i von $anzahl"
Start-Runde $laufwerke
Start-Sleep -Milliseconds 800
}
Write-Host ' Fertig.' -ForegroundColor Green
Start-Sleep -Seconds 2
}
'2' {
$env:FIT_CD_STREICH = '1'
Start-Process -FilePath 'powershell.exe' -WindowStyle Hidden -ArgumentList '-NoLogo', '-NoProfile', '-ExecutionPolicy', 'Bypass', '-Command', 'iex ([IO.File]::ReadAllText($env:FIT_SELF,[Text.Encoding]::UTF8))'
Write-Host ' Der Streich läuft. In 30 Sekunden geht es los - jetzt unauffällig gehen ;-)' -ForegroundColor Green
Write-Host ' Vorzeitig beenden: Task-Manager > Details > powershell.exe' -ForegroundColor DarkGray
Start-Sleep -Seconds 4
}
}