2012-07-31 14 views
6

Su alcuni computer, le schede di rete sono, per impostazione predefinita, configurate con l'opzione "Consenti al dispositivo di riattivare il computer" disattivata. Di conseguenza, Wake on LAN non funzionerà.Come abilitare "Consenti al dispositivo di riattivare il computer" a livello di programmazione?

Ho bisogno di riattivare questa opzione, ma non riesco a farlo a mano - troppi computer! Quindi, ho bisogno di essere in grado di farlo tramite un'API o con uno script.

. (Nota: questo non è un duplicato di How to Enable Wake On LAN programmatically perché quella domanda riguarda le impostazioni del BIOS, mentre questo è circa l'impostazione del sistema operativo)

Ho soluzioni una risposta già utilizzando uno script batch, ma alternative sarebbe molto gradito, specialmente se usano un'API.

risposta

11

Ho trovato una soluzione su The Old New Thing. Il comando powercfg consente di modificare le impostazioni di alimentazione, in particolare è possibile utilizzare -deviceenablewake e -devicedisablewake per attivare e disattivare l'opzione "Consenti al dispositivo di riattivare il computer".

Si può vedere quali dispositivi sono in grado di fare questo con questo comando:

powercfg -devicequery wake_from_any 

Si può vedere che i dispositivi hanno l'opzione attualmente abilitato utilizzando:

powercfg -devicequery wake_armed 

Mettere tutto insieme, questo è lo script batch che ho appena iniziato a utilizzare per abilitare Wake on LAN:

powercfg -devicequery wake_from_any | findstr /i "network ethernet" >adapters.txt 
for /F "tokens=*" %%i in (adapters.txt) do powercfg -deviceenablewake "%%i" 
powercfg -devicequery wake_armed | findstr /i "network ethernet" || goto :failed 

In questo caso, ho scelto di abilitare l'opzione su tutti i dispositivi validi il cui nome contiene la parola "network" o la parola "ethernet"; in alcune situazioni, ovviamente, potresti preferire essere più selettivo su quale dispositivo (i) abiliti.

Problemi correlati