[gelöst] wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smileys
:) ;) :smile: :lol: :hihi: :D :rofl: :muahah: :( :pff: :kopfstreichel: :ohno: :betruebt: :heulen: :kopfkratz: :duckundweg: :o :? :oops: :psst: :sauer: :-P :daumenrunter: :daumen: :dankeschoen: :thx: :dafür: :gähn:
Mehr Smileys anzeigen

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Ansicht erweitern Die letzten Beiträge des Themas: [gelöst] wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

Re: [gelöst] wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

von Holgi » 12.08.2025, 23:01

ah, ok
man könnte sich wohl auch ganz von dieser Abfrage verabschieden, da wir ja zukünftig sowieso kein 32bit Betriebssystem mehr haben werden.
Würde dann so aussehen:

Code: Alles auswählen

@Echo off
:Admin
cls

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params= %*
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"

:gotAdmin 
echo [OK] Skript laeuft mit Administratorrechten.
pause
wobei cacls.exe wohl als veraltet einzustufen ist.

Re: [gelöst] wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

von HAL 9000 » 12.08.2025, 21:52

Hallo Holgi, konnte ich nachstellen,
bei

Code: Alles auswählen

 IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
kommt 2 für '%errorlevel%
bei

Code: Alles auswählen

IF "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" (
kommt 0 für '%errorlevel%
cmd scheint da case-sensitiv zu sein.
wenn das Script in :UACPrompt zu goto gotAdmin kommt, fängt der Loop an.

Wenn man da ein exit einfügt, beendet sich das ursprüngliche Script zwar, aber es wurde inzwischen eine weitere Instanz gestartet, die wiederum eine neue Instanz startet.....

Re: [gelöst] wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

von Holgi » 12.08.2025, 20:44

HAL 9000 hat geschrieben: 12.08.2025, 15:31 Deine Abfrage nach AMD64 müsste ja auch nur umgedreht werden, also bei x86 nutze SsyWOW64 und bei AMD64 nutze System32.
wie genau meinst du das? etwas so:

Code: Alles auswählen

@Echo off
:Admin
cls

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
    IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
)

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params= %*
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"

:gotAdmin
da öffnet sich dann ein CMD Fenster nach dem anderen.

Re: [gelöst] wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

von KaiM » 12.08.2025, 16:25

Natürlich nicht, weil ich keine Ahnung von Scripten habe. :-(
Nur WOL wollte ich.

Re: [gelöst] wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

von HAL 9000 » 12.08.2025, 15:31

@Holgi,
auf Deine Frage wie ich das mache:
Hier ein Beispiel, um sicherzustellen, dass ein Powershell-Script aus dem Kontextmenü sich immer zuerst Admin-Rechte holt.

Code: Alles auswählen

if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit }
Aber wie immer gibt es da viele Wege, normalerweise verzichte ich ganz darauf, wenn ich ein Script brauche, starte ich das eben gleich in einer Shell als Administrator.
Ich muss dazu auch sagen, dass ich am PC wirklich nur Scripte erstelle, wenn die gerade benötigt werden (meistens von Anderen).
Wirklich aufwändige Scripte habe ich für IBM zOS erstellt, weil da sehr viel automatisiert werden musste.
Aber da stellte sich die Frage der Autorisierung nicht, das war vorher definiert.

Deine Abfrage nach AMD64 müsste ja auch nur umgedreht werden, also bei x86 nutze SsyWOW64 und bei AMD64 nutze System32.

@KaiM
Gegenfrage:
Hättest DU es erkannt?
Oder überhaupt eine Idee, was dieser Code überhaupt macht?
Einfach mal darüber nachdenken.

Re: [gelöst] wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

von Holgi » 12.08.2025, 08:10

Nein, keine Auswirkungen und es funktioniert ja.
Warum mir das nicht aufgefallen ist? Weil ich es nie hinterfragt habe und wegen Satz 1.

Re: [gelöst] wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

von KaiM » 12.08.2025, 06:22

Warum ist dir das nicht zuvor aufgefallen?
Wie hätte man den Fehler zuvor erkennen können?
Auswirkungen scheint der Fehler doch nicht zu haben, oder?

Re: [gelöst] wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

von Holgi » 11.08.2025, 22:34

ich benutze diesen Codeschnipsel seit gefühlt 6 Jahren. Jetzt kommst du und schreibst das es totaler Quatsch ist. Und du hast auch noch Recht. OMG!
Ist mir nie in den Sinn gekommen, weil es einfach funktioniert hat (logischerweise).
Aber jetzt werden wohl hunderte von kleinen Scripten auf meinem Rechner umgeschrieben werden müssen.
Hast du eine gute Idee für eine bessere Umssetzung?
Was hälst du hier von:?

Code: Alles auswählen

whoami /groups | find "S-1-5-32-544" >nul
if errorlevel 1 (echo Kein Admin.) else (echo Admin.)
oder das hier:

Code: Alles auswählen

@echo off
>nul 2>&1 net session
if errorlevel 1 (
  echo Kein Admin.
) else (
  echo Admin.
)
oder besser so:?

Code: Alles auswählen

@echo off
:: Admin?
>nul 2>&1 net session && goto :admin

:: Elevate
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
  "Start-Process -FilePath '%~f0' -Verb RunAs"
exit /b

:admin
echo Jetzt mit Adminrechten.
was nutzt du für so einen Fall? Und danke für den Hinweis!

Re: [gelöst] wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

von HAL 9000 » 11.08.2025, 20:45

@Holgi,
eine Bemerkung zu dem Code

Code: Alles auswählen

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
    IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
Die Verwechslung von System32 und SysWOW64 kenne ich bisher von ähnlichen Code-Schnipseln auf GitHub.
Ein Beispiel hier https://gitlab.com/openconnect/openconn ... issues/308
Die Variable %PROCESSOR_ARCHITECTURE% enthält je nach der Art des Programms, unter dem sie abgefragt wird entweder x86 oder AMD64.
Beispiel 1:
cmd.exe unter C:\Windows\SysWOW64 liefert x86
C:\Windows\SysWOW64>echo %PROCESSOR_ARCHITECTURE%
x86
Beispiel 2
cmd.exe unter C:\Windows\System32 liefert AMD64
C:\Windows\System32>echo %PROCESSOR_ARCHITECTURE%
AMD64
Die Abfrage EQU "amd64" liefert unter cmd.exe (64 Bit) AMD64 zurück, unter cmd.exe (32 Bit) x86.
Die anschließende Verzweigung in SysWOW64 ist bei Rückgabe von AMD64 dann natürlich unsinnig, weil die Version für 32 Bit aufgerufen wird.
SysWOW64 gibt es nur auf Systemen mit 64 Bit und enthält die Versionen für 32 Bit.
Das wird gerne falsch verstanden, weil Microsoft auch auf dem BS mit 64 Bit an der Bezeichnung System32 festgehalten hat, obwohl da tatsächliche die Programme enthalten sind, die für 64 Bit kompiliert wurden.

Letztendlich sorgt dieses If nur dafür, dass immer die 32 Bit-Version von cacls.exe benutzt wird.
Entweder die aus SysWOW64 auf Windows mit 64 Bit oder aus System32 bei 32 Bit.

Hat zwar mit dem eigentlichen Problem nichts zu tun, aber der nächste kopiert dann auch wieder Unsinn, wenn er hier darauf stößt.

Re: wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

von Holgi » 11.08.2025, 08:02

KaiM hat geschrieben: 10.08.2025, 17:12 Hast Du evtl. jeweils ein einfachstes Script (bat und ps1) für WOLCMD.exe als Vorlage?
Ich stelle mir für mich einen Ordner vor in dem ich meine WOL Systemstartsscripte abspeichere.
das ist das kürzeste Script, was mir untergekommen ist. Es besteht nämlich nur aus einer Zeile:

Code: Alles auswählen

wolcmd 009024A731DA 255.255.255.255 255.255.255.255 4343
sollte das nicht ohne Adminrechte bei dir laufen, dann oberhalb dieser Zeile noch:

Code: Alles auswählen

@Echo off
:Admin
cls

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
    IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params= %*
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"

:gotAdmin
Im Bios/UEFI muss ebenfalls WOL freigeschaltet sein.
Wegen Linux kann ich nicht weiterhelfen. Davon habe ich null Ahnung, könnte mir aber vorstellen, dass es da Vergleichbares gibt.

Aus der Ferne herunterfahren ist noch mal eine ganz andere Hausnummer. Richtig Tricky!!
Gelöst hatte ich das mit "Plink" (Putty):
das Script dazu sieht dann so aus:

Code: Alles auswählen

@Echo off
echo bitte warten ...
echo wenn der Remote PC heruntergefahren wurde, schliesst sich das Fenster
echo das Passwort muss  n i c h t  eingegeben werden!

set ip=192.168.178.169
set nutzer=Deskmodder
set passwort=meinPasswort

echo echo -e "%passwort%" ^| sudo -S -i poweroff > befehl.txt

plink.exe -batch -ssh %nutzer%@%ip% -pw %passwort% -m befehl.txt
del befehl.txt

exit
Dokumentation:
https://the.earth.li/~sgtatham/putty/0. ... html#plink
https://www.chiark.greenend.org.uk/~sgt ... atest.html

Einfacher ist es wohl - wenn man sowieso auf dem PC ist - einen

Code: Alles auswählen

shutdown -f -s -t 0
bzw. für Linux

Code: Alles auswählen

shutdown -h
Befehl zu senden.

Re: wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

von Benni » 10.08.2025, 21:52

Bedenke: Das geht alles auch nur wenn das auch an ist
https://bilderupload.org/image/1f2b55068-wolon.png
https://bilderupload.org/image/dead55112-woloff.png
und im Router+WinDefenderFirewall der Port auch offen ist.. :smile:

Re: wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

von KaiM » 10.08.2025, 17:12

https://www.ip-insider.de/die-besten-to ... 5699ecf71/

Gibt es auch eine Magic Packet Lösung um den gestarteten PC auch wieder abzuschalten?

https://oette.wordpress.com/wol2/
Additionally WOL2 allows you to reboot and power off these machines if they are running Microsoft Windows.
Funktioniert das auch bei Linux PC's`?
Vermutlich nicht, richtig?

Edit: 11.08.2025
@Holgi
Hast Du evtl. jeweils ein einfachstes Script (bat und ps1) für die WOLCMD.exe als Vorlage?
Ich stelle mir für mich einen Ordner vor in dem ich meine WOL Systemstartsscripte abspeichere.

Re: wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

von Holgi » 10.08.2025, 12:01

ganz ohne Installation geht übrigens auch:
https://www.depicus.com/wake-on-lan/woli
WOL.JPG

Re: wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

von Holgi » 10.08.2025, 11:32

Hi Kaim,
gerade mal auf meinem Rechner geschaut. Das Thema hat mich 2022 einige Tage beschäftigt. Da brauchte ich es für ein Synology NAS.
Genutzt habe ich letztendlich
https://www.depicus.com/wake-on-lan/wake-on-lan-cmd
Es wird aufgerufen mit

Code: Alles auswählen

WOLCMD.exe xxxxxxxxxxxx aaa.bbb.ccc.ddd eee.fff.ggg.h iiii
xxxxxxxxxxxx = MACAdress
aaa.bbb.ccc.ddd = IP
eee.fff.ggg.h = Subnetzmaske
iiii= Port
vorher alles ermitteln. freischalten und ab geht die Post

Wenn es reines Powershell sein soll:

Code: Alles auswählen

# Parameter
$MacAddress  = "70:07:D0:1B:5A:7C"
$IpAddress   = "192.168.178.169"
$SubnetMask  = "255.255.255.0"
$Port        = 9

# Broadcast-Adresse berechnen ( (IP & Maske) | ~Maske )
function Get-BroadcastAddress([string]$ip, [string]$mask) {
    $ib = ([System.Net.IPAddress]::Parse($ip)).GetAddressBytes()
    $mb = ([System.Net.IPAddress]::Parse($mask)).GetAddressBytes()
    $bb = [byte[]]::new(4)
    for($i=0;$i -lt 4;$i++){
        $inv = $mb[$i] -bxor 0xFF
        $bb[$i] = (($ib[$i] -band $mb[$i]) -bor $inv)
    }
    return [System.Net.IPAddress]::new($bb)
}

$Broadcast = Get-BroadcastAddress $IpAddress $SubnetMask

# Magic Packet bauen
$macClean = ($MacAddress -replace '[-:\.]','').ToUpper()
if ($macClean.Length -ne 12) { throw "Ungültige MAC-Adresse: $MacAddress" }

$macBytes = for($i=0; $i -lt 12; $i+=2){
    [byte]::Parse($macClean.Substring($i,2), [System.Globalization.NumberStyles]::HexNumber)
}

$packet = New-Object byte[] (6 + 16*6)
for($i=0;$i -lt 6;$i++){ $packet[$i] = 0xFF }
for($i=0;$i -lt 16;$i++){ [Array]::Copy($macBytes,0,$packet,6 + 6*$i,6) }

# Senden
$udp = [System.Net.Sockets.UdpClient]::new()
$udp.Client.SetSocketOption([System.Net.Sockets.SocketOptionLevel]::Socket,
                            [System.Net.Sockets.SocketOptionName]::Broadcast, $true)
$udp.Connect($Broadcast, $Port)
[void]$udp.Send($packet, $packet.Length)
$udp.Dispose()

"Magic Packet an $($Broadcast):$Port für $MacAddress gesendet."

Re: wol.exe - wake on lan - PC starten - Windows 11 24H2 als Client

von KaiM » 10.08.2025, 10:48

> Das nächste Mal melde dich ganz einfach und wir verschieben den Thread.
Ok, das war mir nicht klar, ich wollte den Thread selber verschieben.
Das ist mir leider 1zu1 misslungen, weil die Formatierung nicht übernommen wurde.

Da sind immer noch Fehler drin und nun?
So belassen, damit niemand genervt wird?

Nach oben