Rechner abschalten

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Rechner abschalten

Beitrag von Tombi »

Liebe Community,
sicher denkt ihr jetzt, einen Rechner abzuschalten sei' doch ganz einfach.

Dafür habe ich bisher immer folgenden Code verwendet:

Code: Alles auswählen

RunProgram("C:\Windows\System32\shutdown.exe","-s -t 0 -f","",0)
Leider musste ich feststellen, das dies' nur mit Administratorrechte bei Windows XP funktioniert.
Andere Betriebssysteme habe ich noch nicht getestet, da ich sowieso nur WinXP überall verwenden werde.


Wie kann ich nun dieses Problem lösen?
Kennt jemand eine andere Möglichkeit, den Rechner herunterzufahren - auch ohne Adminrechten?


MFG,
Tombi
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Rechner abschalten

Beitrag von ts-soft »

Code: Alles auswählen

Procedure EnableShutDown()
  Protected Privileges.TOKEN_PRIVILEGES
  Protected hToken.i
  OpenProcessToken_(GetCurrentProcess_(), #TOKEN_ADJUST_PRIVILEGES  | #TOKEN_QUERY, @hToken)
  Privileges\PrivilegeCount           = 1
  Privileges\Privileges[0]\Attributes = #SE_PRIVILEGE_ENABLED
  LookupPrivilegeValue_(0, "SeShutdownPrivilege", @Privileges\Privileges[0]\Luid)
  AdjustTokenPrivileges_(hToken, 0, @Privileges, 0, 0, 0)
  CloseHandle_(hToken)
EndProcedure

EnableShutDown()
ExitWindowsEx_(#EWX_SHUTDOWN | #EWX_FORCE, 0)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Re: Rechner abschalten

Beitrag von Tombi »

Kenne mich damit nicht sehr aus.
Funktioniert prima, aber vielleicht können Sie mir ein wenig erklären was diese Procedure genau ausführt?
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Rechner abschalten

Beitrag von ts-soft »

EnableShutdown holt sich vom System die Rechte zum beenden, die seit Win2K erforderlich sind.
Mit diesen Rechten ausgestattet funktioniert dann auch die ExitWindows API, die ohne diese
Rechte nur unter Win 9x funktionieren würde.

Ansonsten hilft google
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten