Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Wie kann man einen Computer über das Netwerk herunterfahren (https://www.delphipraxis.net/22589-wie-kann-man-einen-computer-ueber-das-netwerk-herunterfahren.html)

Delphi Star 19. Mai 2004 16:41


Wie kann man einen Computer über das Netwerk herunterfahren
 
Moin,
Wie kann man einen XP Computer über das Netwerk herunterfahren ohne das irgendwelche Einstellungen an dem Computer der heruntergefahren werden soll vorgenommen werden müssen, ich habe zwar schon ein Programm dafür gefunden mit dem das möglich ist aber da erscheint erst einen Frage ob der Computer wirklich heruntergefahren werden soll, aber ich möchte kein Programm schreiben mit dem man den Computer nuken tut, bin ja kein Hacker :angle:

MathiasSimmack 19. Mai 2004 16:44

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Na, wenn das so ist, dann spricht doch auch nichts gegen die Information auf dem Rechner, der heruntergefahren werden soll.

Delphi Star 19. Mai 2004 16:47

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Ich habe mehrere Computer in verschiedenen Etagen, wenn muss aber immer von ganz oben nach unten laufen um die Computer auszuschalten und wenn dann eine Frage kommt muss ich trotzdem nach unten laufen und auf ja drücken und irgend ein Remoteprogramm möcht ich auch nicht installieren

fred.reichbier 19. Mai 2004 16:47

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Moin Delphi Star,
guck mal hier: http://www.delphi-source.de/projekte/internet/?id=22
Ist es das, was du suchst?

Luckie 19. Mai 2004 16:50

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Oder bei Assarbad: www.assarbad.net -> RShutdown2

Delphi Star 19. Mai 2004 16:56

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Das Assarbart nützt mir aber herzlich wenig, weil es vor dem Herunterfahren eine Frage stellt, da kann ich meine anderen Rechner ja gleich normal herunterfahren

toms 19. Mai 2004 17:27

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Zitat:

Zitat von Delphi Star
Das Assarbart nützt mir aber herzlich wenig, weil es vor dem Herunterfahren eine Frage stellt,

Kann man das denn nicht unterdrücken?

Zottel 19. Mai 2004 17:37

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Hallo Delphi-Star ;-)
Ich habe hier auf den Rechnern in der Firma ein Proggi im Hintergrund laufen, das auf UDP-Nachrichten wartet. Kommt eine Nachricht, die den Text: SHUTDOWN:RECHNERNAME enthält, fährt das Programm den Rechner einfach runter. dazu benutze ich teilweise den shutdown-befehl unter win95 und die W2K rechner fahre ich mit SndKey runter. Das ist eine kleine .PAS-datei, mit der man Tastendrücke emulieren kann. Fragt mich nicht, wo ich das ding her hatte. Kann evtl bei Delphi auch mit beiliegen. Mitlerweie fahren sich die rechner hier morgens rauf und abends runter, ohne das ich da was machen brauch (bei über 70 Rechnern wurde mir das zuviel ;-) )

Delphi Star 19. Mai 2004 17:42

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Was ist denn mit die Rechner fahren morgens automatisch hoch gemeint, du willst mir also erzählen das man mit nem Progi nen Rechner hoch fahren kann, wie soll das denn bitteschön funktionieren, das glaub ich erst wenn ichs geshen hab oder hab ich da jetzt was falch verstanden

Phoenix 19. Mai 2004 17:50

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Zitat:

Zitat von Delphi Star
wie soll das denn bitteschön funktionieren

Das Zauberwort heisst Wake on Lan (WOL). Genauso wie manche Rechner permanent auf einen Tastendruck auf der Tastatur warten um hochzufahren (und die sind nicht im Standby-Modus) gibt es rechner, die auf der Netzwerkkarte auf ein sog. Magic Paket warten. Sobald dieses empfangen wird fährt der Rechner hoch.

Dazu gibts bereits in der Codelibrary was von mir. Das muss das Bios und die Netzwerkkarte natürlich können - sonst gehts freilich nicht.

Delphi Star 19. Mai 2004 17:53

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Wo denn im Code-Libary

Zottel 19. Mai 2004 17:54

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Such nach WOL oder WakeUpOnLan. Eine sicherheit solltest du da allerdings einbauen, wenn du mehrere rechner so hochfahren willst: mach ein delay von einer sekunde zwischen dem hochfahren rein, sonst fliegt die sicherung raus :-D

Nicodius 19. Mai 2004 17:54

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
hier das mal gefunden


Delphi-Quellcode:
{-----------------------------------------------------------------------------
 Unit Name: Shutdown
 Author:   Manfred Ruzicka
 History:  Mit dieser Unit ist es möglich einen Windows NT /2000 Computer
        über das Netzwerk herunterzufahren, und diesen Vorgang wieder abzubrechen.

        Erklärung der Variablen:
            System: string     - Computername oder IP-Adresse
            Nachricht: string - Die Nachricht die als Warnung erscheinen soll
                            (nur wenn countdoen <> 0)
            force: boolean     - Ob der Computer bei nicht gespeicherten Dokumenten
                            nachfragt (true = keine nachfrage)
            reboot: boolean     - true = startet den Computer neu
            countdown: integer - gibt die Zeit in Sekunden an, die vor dem
                            Shutdown vergehen soll (0 = keine Warnung)
-----------------------------------------------------------------------------}

unit shutdown;

interface

uses
  Windows,
  StdCtrls;

  procedure shut(system, nachricht: string; force, reboot: boolean; countdown: integer);
  procedure abortshut(system: string);

implementation

  const
  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
  var
  hdlg: DWORD = 0;

procedure 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;

procedure abortshut(system: string);
var
  hToken: THandle;
  tp: TTokenPrivileges;
  h: Dword;
begin
  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken);
  LookupPrivilegeValue(pchar(system), 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);
  CloseHandle(hToken);
  abortSystemShutdown(pchar(system));
end;

end.

Zottel 19. Mai 2004 18:02

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
@Nicodius
Die function klappt scheinbar leider nur, wenn du admin-rechte hast..... :-( schade... sonst hätt ich gleich wieder unser programm zum runterfahren geändert ;-)

Phoenix 19. Mai 2004 18:14

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Zitat:

Zitat von Zottel
@Nicodius
Die function klappt scheinbar leider nur, wenn du admin-rechte hast..... :-( schade...

Schade???? Wär ja noch schöner, wenn jedes x-Beliebige Script-Kiddy meinen Rechner remoter herunterfahren würde. Natürlich(!) geht das nur mit Adminrechten.

Zu Wake on Lan: Wake on Lan mit Indy

Luckie 19. Mai 2004 20:01

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Zitat:

Zitat von Delphi Star
Das Assarbart nützt mir aber herzlich wenig, weil es vor dem Herunterfahren eine Frage stellt, da kann ich meine anderen Rechner ja gleich normal herunterfahren

Wie wäre es mit in die Sourcen kucken und selber anpassen? Willst du was fertiges bist du hier falsch. Dann solltest du auf den bekannten Downloadportalen kucken.

kiar 19. Mai 2004 20:25

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
hallo,

ich nutze selber das Rshutdown2 . kann das mit der meldung nicht bestätigen. der computer wird problemlos runtergefahren.

raik

eroe 19. Mai 2004 20:31

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Delphi Star
Das Assarbart nützt mir aber herzlich wenig, weil es vor dem Herunterfahren eine Frage stellt, da kann ich meine anderen Rechner ja gleich normal herunterfahren

Wie wäre es mit in die Sourcen kucken und selber anpassen? Willst du was fertiges bist du hier falsch. Dann solltest du auf den bekannten Downloadportalen kucken.

soweit ich das verstanden habe meinte er die windows-sicherheitsabfrage ob der rechner _wirklich_ runtergefahren werden soll, und ich kann mir nur schwer vorstellen dass billy boy ihn so mir nichts dir nichts in seinen source schaun lässt, und sei es nur zum auslesen dieser funktion ;)

PS: korrigiert mich wenn ich falsch liege :D

Luckie 19. Mai 2004 20:37

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Kann das sein, dass es nur innerhalb einer Domain funktioniert? Ich habe es gerade im Heimnetzwerk getestet und der Remoterechner ist nicht runtergefahren.

kiar 19. Mai 2004 20:41

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
luckie,

ich gebe nur den computernamen an und fahre ihn runter.

raik

Luckie 19. Mai 2004 20:47

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Habe gerade eine Mail an Assa geschrieben. Befinden sich deine Rechner in einer Domain?

Luckie 19. Mai 2004 20:57

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Nachtrag:
Delphi-Quellcode:
function EnableShutDownPrivilege: Boolean;
var
  vi: TOSVersionInfo;
  hToken: THandle;
  tp: TTokenPrivileges;
  h: DWord;
begin
  result := False;
  vi.dwOSVersionInfoSize := SizeOf(vi);
  GetVersionEx(vi);
  if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then // Windows NT
  begin
    OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken);
    LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid);
    tp.PrivilegeCount := 1;
    tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    h := 0;
    result := AdjustTokenPrivileges(hToken, False, tp, 0,
      PTokenPrivileges(nil)^, h);
    CloseHandle(hToken);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if EnableShutDownPrivilege then
    if not InitiateSystemShutdown('HEPU', nil, 0, True, False) then
      ShowMessage(SysErrorMessage(GetlastError));
end;
GetLastError liefert mit immer:
Zitat:

Der Netzwerkpfad wurde nicht gefunden
Auch wenn ich den Rechnernamen so "\\HEPU" angebe. Rechner befindet sich in der gleichen Arbeitsgruppe.

The-X 20. Mai 2004 02:20

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
jupp das Remote-Herunterfahren funktioniert nur als Domänen-Administrator, bei Rechnern die der Domäne angehören
(hab ich in der Schule mehrmals erfoglreich bei den Lehrerrechnern getestet, als Schüler)

Luckie 20. Mai 2004 10:30

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
So, hier was mir Assa zu seinem RemoteShutdown geschrieben hat per Mail. Ich denke, das geht in Ordnung, wenn ich es hier veröffentliche.

Zitat:

Zitat von Assa
Hallöle,

IMO könnte hier ZoneAlarm das Problem sein. Der Shutdown wird über PRC
abgewickelt und Nachrichten senden über Messenger ebenfalls. Erstens muß
also serverseitig (i.e. \\HEPU) der Service laufen (auch Messenger) und der
Port nach außen offen sein. IMO 135/137(?) und 443 (bin aber nicht
sicher!!!). Das beim Runterfahren ist auch normal, kann man auch sein
lassen.
Ein weiteres Problem ist, daß es im LAN bei Windows-Rechnern einen
Master-Browser gibt, der die Liste aller im Netz befindlichen Rechner hält.
Ein Windows-Rechner broadcastet in bestimmten Intervallen seinen Namen
durchs Netz. Wenn auch dies durch die Firewall lahmgelegt wurde, dann hilft
nur noch ein Eintrag in die LMHOSTS (%SystemRoot%\System32\drivers\etc).

Ist all dies gewährleistet, muß zuguterletzt (zumindest für die
Shutdown-Funktion) noch auf beiden Rechnern (denn es existiert ja keine
Domain) der Benutzeraccount mit gleichem Paßwort existieren (und mindestens
auf dem Zielrechner mit administrativen Rechten!!!), unter dem RShutdown2
läuft. Dies ist eben der Vorteil von Domains - Domains haben Vorrang vor
solchen komplizierten Dingen.

Also zB
\\LUCKIE JohnDoe password
\\HEPU JohnDoe password

Wenn du nun als JohnDoe auf \\LUCKIE eingeloggt bist, kannst du mit dieser
Methode problemlos auf Shares usw von \\HEPU zugreifen, da der Hash über
Benutzernamen und Paßwort gleich ist.

Die Bedingung "administrative" Rechte kannst du entfernen indem du bei den
Sicherheitseinstellungen der Benutzergruppe Everyone das Recht zum
entfernten Herunterfahren einräumst. Würde ich aber nicht empfehlen!

Gruß,

Olli

--
---------------------------------------------------
May the source be with you, stranger

Contacts / Kontakte
eMail: Assarbad@gmx.net|info|de|com
ICQ UIN #281645
http://assarbad.org & http://assarbad.net & http://assarbad.info


MCeddy 20. Mai 2004 19:55

Re: Wie kann man einen Computer über das Netwerk herunterfah
 
Hallo. Hab auch noch ne Möglichkeit parat. Wie man ohne Extra Programm den PC im XP-Netzwerk runterfahren kann: Einfach mal shutdown -i in die Konsole eingeben und dann alle weiteren Optionen einstellen - fertig. Die ganze sache lässt sich natürlich auch über paramerter regeln (die Befehle gibts, wenn du nur "shutdown" eingibst ;-)

viele Grüße

MCeddy02
:cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz