Service(C#) fährt PC NICHT runter

Diskutiere Service(C#) fährt PC NICHT runter im Programmierung Forum im Bereich Software Forum; Hallo, ich habe einen Service welcher in Visual C# geschrieben wurde. Am Ende seiner Arbeit entscheidet er ob der PC auf dem er läuft runter...
B

bluefisch200

Threadstarter
Dabei seit
18.10.2007
Beiträge
2.463
Hallo,

ich habe einen Service welcher in Visual C# geschrieben wurde.

Am Ende seiner Arbeit entscheidet er ob der PC auf dem er läuft runter gefahren werden soll.
Im Falle dass dies so sein muss wird die Codezeile:
Code:
System.Diagnostics.Process.Start("shutdown","-s -t 0");
ausgeführt.

Dies bleibt aber wirklungslos.
Nachdem ich mich einlogge und den Service über die Serviceverwaltung manuell neu starte geht alles richtig und der Rechner schaltet aus.

Der Service wird mit "Local System" Account ausgeführt und steht auf "Automatic".

Wie kriege ich den Service dazu richtig zu funktionieren?
 
Schard

Schard

Dabei seit
13.04.2007
Beiträge
720
Ort
Hannover
Versuch mal Windows über den Kernel herunter zu fahren:
Code:
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);
 }
    }
}
 
Thema:

Service(C#) fährt PC NICHT runter

Service(C#) fährt PC NICHT runter - Ähnliche Themen

  • Nach Update jedesmal Meldung: Office XP Service Pack 3 – Fehler 0x80096004

    Nach Update jedesmal Meldung: Office XP Service Pack 3 – Fehler 0x80096004: Lässt sich Fehlermeldung unterdrücken? "Fehlerfreigabe"? Update aussetzen keine Option. Älterer Treiber oder Programm im Kompatibilitätsmodus...
  • Surface Go - Garantiefall und Service funktioniert nicht

    Surface Go - Garantiefall und Service funktioniert nicht: Hallo zusammen, mein Surface Go hat / hatte ein Software Problem und dies konnte nur durch Microsoft behoben werden. Da das Problem in der...
  • System Service Expection

    System Service Expection: Hallo ich will meine Festplatte klonen (samt Betriebsystem) da meine alte nicht mehr genügend platz aufweist. Dafür ist ein Neustart...
  • Negative Erfahrung mit Microsofts Reperatur Service

    Negative Erfahrung mit Microsofts Reperatur Service: Hallo, ich habe mir im Juli 2019 bei einem großen deutschen Elektrohandel ein Surface Pro 6 gekauft. Das Geräte funktionierte die ersten 2 Monate...
  • Ähnliche Themen
  • Nach Update jedesmal Meldung: Office XP Service Pack 3 – Fehler 0x80096004

    Nach Update jedesmal Meldung: Office XP Service Pack 3 – Fehler 0x80096004: Lässt sich Fehlermeldung unterdrücken? "Fehlerfreigabe"? Update aussetzen keine Option. Älterer Treiber oder Programm im Kompatibilitätsmodus...
  • Surface Go - Garantiefall und Service funktioniert nicht

    Surface Go - Garantiefall und Service funktioniert nicht: Hallo zusammen, mein Surface Go hat / hatte ein Software Problem und dies konnte nur durch Microsoft behoben werden. Da das Problem in der...
  • System Service Expection

    System Service Expection: Hallo ich will meine Festplatte klonen (samt Betriebsystem) da meine alte nicht mehr genügend platz aufweist. Dafür ist ein Neustart...
  • Negative Erfahrung mit Microsofts Reperatur Service

    Negative Erfahrung mit Microsofts Reperatur Service: Hallo, ich habe mir im Juli 2019 bei einem großen deutschen Elektrohandel ein Surface Pro 6 gekauft. Das Geräte funktionierte die ersten 2 Monate...
  • Sucheingaben

    ExitWindows windows 10 c#

    Oben