Pc herunterfahren

rtky_Trunks

Mitglied
hi,

Ich hab da ein code gefunden und ich versteh da etwas nicht, vlt könnt ihr mir weiterhelfen.

Code:
rocedure shut(system, nachricht: string; force, reboot: Boolean; countdown: Integer);
var
  otoken, hToken: THandle;
  tp: TTokenPrivileges;
  h: DWORD;
begin
  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken);
  otoken := htoken;
  LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, tp.Privileges[0].luid);
  tp.privilegecount := 1;
  tp.privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  h := 0;
  AdjustTokenPrivileges(hToken, False, tp, 0, PTokenPrivileges(nil)^, h);
  InitiateSystemShutdown(PChar(system), PChar(nachricht), countdown, force, reboot);
  tp.privilegecount := 1;
  tp.privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  h := 0;
  AdjustTokenPrivileges(oToken, False, tp, 0, PTokenPrivileges(nil)^, h);
  CloseHandle(hToken);
end;
system = Ip

Ich weiß daraus wie ich die ip ändern kann, also wie ich den computer auswählen kann der heruntergefahren werden soll. (hilfe grammatik :) )

Aber wenn ich eine fremde ip (also nicht meine) eingebe also zum beispiel auf ein lanparty die ip "192.168.1.6"
dann fährt der computer nicht runter!
Liegt das an meine rechten wo ich in dem programm habe?
Wenn ja - Wie kann ich die dan zum beispiel auf admin ändern? also das ich mich unter admin einlogge und dann herunterfahre. (ohje ich glaub ihr kennt meine absichten ;) )
Haja, das stört halt wenn andere Lanparty-Freunde ihre P*** anschauen wärend wir gemütlich ne runde Cs (counter-strike) spielen wollen.
;)

Danke mal im vorraus
 
Das ist wieder mal ein typischer Fall für MSDN. Wer suchet, der findet. (Das gilt insbesondere für MSDN.)
 
Mein Link zeigt doch auf die Dokumentation der Funktion, um die es hier geht. Da steht auch der ganze Rest über Privilegien etc., welche Funktionen es da gibt, wie man sie anwendet usw.!
 
Du kannst ein System nur dann herunterfahren, wenn du das Privileg dazu hast. Der andere PC muss dich also als privilegiert ansehen. Das Privileg kannst du natürlich nicht selber setzen, denn auch dafür musst du ja privilegiert sein.

Ich habe den Eindruck, du hast gar nicht gelesen, was da in MSDN steht. Nämlich:
Code:
To shut down the local computer, the calling thread must have the SE_SHUTDOWN_NAME privilege.
To shut down a remote computer, the calling thread must have the SE_REMOTE_SHUTDOWN_NAME privilege on the remote computer.
By default, users can enable the SE_SHUTDOWN_NAME privilege on the computer they are logged onto, and administrators can enable the SE_REMOTE_SHUTDOWN_NAME privilege on remote computers. For more information, see Running with Special Privileges.
Du willst ja schließlich einen Remote Computer runterfahren. Dafür musst du also Administrator auf diesem Rechner sein und dort das Privileg SE_REMOTE_SHUTDOWN_NAME setzen. Da ich mich nie näher mit diesem Thema beschäftigt habe, kann ich dir keinen Code geben oder sowas. Der ganze Kram über Privilegien etc. steht in MSDN. Aber wenn du kein Admin bist, geht das sowieso alles nicht. (Wär ja noch schöner, dass irgendjemand das Recht hat, einfach meinen Rechner runterzufahren :D)

-Gawayn
 

Neue Beiträge

Zurück