WinFuture-Forum.de: Windows Herunterfahren In C# - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

Windows Herunterfahren In C#

#16 _.: Christopher :._

  • Gruppe: Gäste

geschrieben 23. November 2004 - 19:37

Es kommt ein Kompilierfehler

Sag du doch mal den code wenn du ihn weist!

Dieser Beitrag wurde von .: Christopher :. bearbeitet: 23. November 2004 - 19:38

0

Anzeige



#17 Mitglied ist offline   DK2000 

  • Gruppe: Administration
  • Beiträge: 19.571
  • Beigetreten: 19. August 04
  • Reputation: 1.436
  • Geschlecht:Männlich
  • Wohnort:Oben auf dem Berg
  • Interessen:Essen, PC, Filme, TV Serien...

geschrieben 23. November 2004 - 19:56

Hieß das nicht

System.Diagnostics.Process.Start("shutdown", "-s -t 00")

Wobei sich shutdown im Systempfad befinden muss.
Ich bin kein Toilettenpapier-Hamster.
---
Ich bin ein kleiner, schnickeldischnuckeliger Tiger aus dem Schwarzwald.
Alle haben mich ganz dolle lila lieb.
0

#18 _.: Christopher :._

  • Gruppe: Gäste

geschrieben 23. November 2004 - 20:09

Yeah danke das geht... :blink:

Kannst du mir auch sagen wie er neu startet?
0

#19 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.505
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 23. November 2004 - 20:09

import System.Diagnostics;
System.Diagnostics.Process.Start("%windir%\system32\shutdown.exe","/s /f");

Den namespace findet du in der System.dll

Neustarten geht mit /r statt /s, aber du hättest ja auch einfach mal "shutdown -?" oder "help shutdown" eingeben können.

Dieser Beitrag wurde von Rika bearbeitet: 23. November 2004 - 20:10

Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#20 Mitglied ist offline   Matze 

  • Gruppe: aktive Mitglieder
  • Beiträge: 661
  • Beigetreten: 29. Februar 04
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 23. November 2004 - 20:24

Warum nicht einfach system("shutdown -s -f"); ?
Lorem ipsum dolor sit amet, consetetur sadipscing elitr.
0

#21 Mitglied ist offline   DK2000 

  • Gruppe: Administration
  • Beiträge: 19.571
  • Beigetreten: 19. August 04
  • Reputation: 1.436
  • Geschlecht:Männlich
  • Wohnort:Oben auf dem Berg
  • Interessen:Essen, PC, Filme, TV Serien...

geschrieben 23. November 2004 - 20:34

Alternativ zum externen Befehl shutdown.exe kannst Du auch folgenden Code verwenden:

using System;
using System.Runtime.InteropServices;

namespace ShutDown
{
	class XPShutDown
	{
  [StructLayout(LayoutKind.Sequential, Pack=1)]
 	 internal struct TokPriv1Luid
  {
 	 public int Count;
 	 public long Luid;
 	 public int Attr;
  }

  [DllImport("kernel32.dll", ExactSpelling=true)]
  internal static extern IntPtr GetCurrentProcess();

  [DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true)]
  internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);

  [DllImport("advapi32.dll", SetLastError=true)]
  internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid );

  [DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true)]
  internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev,IntPtr relen);

  [DllImport("user32.dll", ExactSpelling=true, SetLastError=true)]
  internal static extern bool ExitWindowsEx(int flg, int rea);

  internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
  internal const int TOKEN_QUERY = 0x00000008;
  internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
  internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
  internal const int EWX_LOGOFF = 0x00000000;
  internal const int EWX_SHUTDOWN = 0x00000001;
  internal const int EWX_REBOOT = 0x00000002;
  internal const int EWX_FORCE = 0x00000004;
  internal const int EWX_POWEROFF = 0x00000008;
  internal const int EWX_FORCEIFHUNG = 0x00000010;

  private static void XPRebootCommand(int flg)
  {
 	 bool ok;
 	 TokPriv1Luid tp;
 	 IntPtr hproc = GetCurrentProcess();
 	 IntPtr htok = IntPtr.Zero;
 	 ok = OpenProcessToken( hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok );
 	 tp.Count = 1;
 	 tp.Luid = 0;
 	 tp.Attr = SE_PRIVILEGE_ENABLED;
 	 ok = LookupPrivilegeValue( null, SE_SHUTDOWN_NAME, ref tp.Luid );
 	 ok = AdjustTokenPrivileges( htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero );
 	 ok = ExitWindowsEx( flg, 0 );
  }

  static void Main()
  {
 	 XPRebootCommand(EWX_REBOOT + EWX_FORCE);
  }
	}
}


Da hast Du dann eine shutdown.exe in C#.
Ich bin kein Toilettenpapier-Hamster.
---
Ich bin ein kleiner, schnickeldischnuckeliger Tiger aus dem Schwarzwald.
Alle haben mich ganz dolle lila lieb.
0

#22 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.505
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 23. November 2004 - 20:39

Boah, mach's doch nicht so kompliziert...

using System;
using System.Runtime.InteropServices;

namespace ShutDown
{
class XPShutDown
{
 [DllImport("user32.dll", ExactSpelling=true, SetLastError=true)]
 internal static extern bool ExitWindowsEx(int flg, int rea);

 internal const int EWX_LOGOFF = 0x00000000;
 internal const int EWX_SHUTDOWN = 0x00000001;
 internal const int EWX_REBOOT = 0x00000002;
 internal const int EWX_FORCE = 0x00000004;
 internal const int EWX_POWEROFF = 0x00000008;
 internal const int EWX_FORCEIFHUNG = 0x00000010;
  ok = ExitWindowsEx( flg, 0 );
 }

 static void Main()
 {
  ExitWindowsEx(EWX_REBOOT + EWX_FORCE, 0);
 }
}
}

Die Privleges nachzuschauen ist doch unnötig.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#23 _RusDzanmahmudov_

  • Gruppe: Gäste

geschrieben 23. November 2004 - 20:49

Zitat (Rika: 23.11.2004, 20:09)

import System.Diagnostics;
System.Diagnostics.Process.Start("%windir%\system32\shutdown.exe","/s /f");

Den namespace findet du in der System.dll

Neustarten geht mit /r statt /s, aber du hättest ja auch einfach mal "shutdown -?" oder "help shutdown" eingeben können.
<{POST_SNAPBACK}>


Hallo, er programmiert in C#, also denk ich mal würde das
using System.Diagnistics;
heißen.

Ahja, und "\\System32" is ne system directory, also, brauch man das nicht wiedererwähnen, man kann einfach "shutdown.exe" schreiben, weil, wenn du z.B. auf Start->Ausführen gehst, tippst du ja nicht "%windir%\system32\cmd.exe" ein, sondern, einfach nur cmd :blink:

Dieser Beitrag wurde von RusDzanmahmudov bearbeitet: 23. November 2004 - 20:49

0

#24 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.505
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 23. November 2004 - 21:13

System32 ist aber möglicherweise nicht im Include-Pfad an erster Stelle, z.B. weil SafeDllSearch aktiviert ist. D.h. du hättest eine Privilege Escalation, eine Sicherheitslücke in einem so kurzen Programmm... Gratulation.

Ansonsten, ja klar, using. Programmiere derzeit C# und Java, da kommen solche Verwechslungen vor.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#25 _FF1980_

  • Gruppe: Gäste

geschrieben 24. November 2004 - 09:16

Was mich interessieren würde: Warum muss es ein C# Programm sein, wenn es auch eine Verknüpfung mit "Shutdown -s -t0" tut?

Lokalen Rechner herunterfahren:
(Ziel speichern unter, Endung .txt entfernen)
Angehängte Datei  Lokal_herunterfahren.lnk.txt (1,46K)
Anzahl der Downloads: 908


Ans Netzwerk angeschlossenen Rechner herunterfahren:
(Ziel speichern unter, Endung .txt entfernen und IP anpassen)
Angehängte Datei  Remote_herunterfahren.lnk.txt (1,62K)
Anzahl der Downloads: 646

Dieser Beitrag wurde von FF1980 bearbeitet: 24. November 2004 - 09:24

0

#26 Mitglied ist offline   DavUlb 

  • Gruppe: aktive Mitglieder
  • Beiträge: 196
  • Beigetreten: 29. Januar 04
  • Reputation: 0

geschrieben 24. November 2004 - 09:42

Ja schon - aber denk doch mal nach was du mit nem Programm für Möglichkeiten hast - du kannst den Rechner zu ner bestimmten Zeit runterfahren lassen - wenn ein bestimmtes Ereignis auftritt - vl. über ICQ den Rechner runterfahren lassen weil man nicht daheim ist ... da gibts ewig viel Verwendungsmöglichkeiten die du mit dem Shell-Befehl nicht hast.
0

#27 _FF1980_

  • Gruppe: Gäste

geschrieben 24. November 2004 - 10:44

Nun ja, unter diesem Gesichtspunkt stimmt das schon, wenn du unterwegs bist. Daran habe ich ehrlich gesagt nicht gedacht.
0

#28 Mitglied ist offline   kern 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 24. Februar 05
  • Reputation: 0

geschrieben 24. Februar 2005 - 17:37

hi alle !

wollt fragen ob so einen code auch für c++ gibt den so einen brauche ich unbedingt !
könnte mir den irgentwer sagen ? oder wo ich den herbekomme?

mfg kern
0

#29 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.505
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 24. Februar 2005 - 17:48

Über C#<->C++ nachdenken, MSDN, Platform SDK, Google...

P.S.: Lern schreiben!
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#30 Mitglied ist offline   kern 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 24. Februar 05
  • Reputation: 0

geschrieben 24. Februar 2005 - 19:50

lol wie glaubst du bin ich zu dem beitrag gekommen ? ^^ ...google

ja und nu frag ich halt mal ob das wer weiß und dan sagt mir wer mit google

ja vl. weiß es ja wer hier oder? ^^

mfg kern

ps: rechtschreibfehler kannst du dir behalten und aufheben :blink: ^^
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0