WinFuture-Forum.de: [vb.net]: Shutdownproblem! - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[vb.net]: Shutdownproblem!


#1 _Der dom_

  • Gruppe: Gäste

geschrieben 05. Februar 2009 - 16:05

Ich hab hier ein kleines Progrämmchen das u.a. dem Rechner wo es installiert ist runterfahren soll wenn man im entsprechenden Reiter die entsprechende Funktion wählt.

Soweit so gut, momentan hab ich es mit Shell ("...\shutdown.exe -s") gelöst aber der Humbug klappt nur auf dem Rechner wo ich es programmiert habe und nicht auf dem, wo es drauf soll. Hat jemand eine Idee woran es liegt oder wie ich es anders machen könnte?

Beide Systeme haben Win XP Pro aktuelle Updates und so weiter.

Benutzer haben die nötigen Rechte daran sollte es eigentlich nicht liegen.
0

Anzeige



#2 Mitglied ist offline   hanussen 

  • Gruppe: aktive Mitglieder
  • Beiträge: 103
  • Beigetreten: 02. November 08
  • Reputation: 0

geschrieben 07. Februar 2009 - 13:03

Schon mit "force" /f probiert?

shutdown /s /f /t 0

MfG Hanussen
There is method to my madness.
0

#3 _Der dom_

  • Gruppe: Gäste

geschrieben 09. Februar 2009 - 10:12

Ja, passiert trotzdem nichts! Es ist, als würde XP da den Dienst mangels Rechte verweigern, aber selbst als administrator tut sich da nichts!

Daher meine Frage, ob sich das eventuell auch anders regeln lässt.
0

#4 Mitglied ist offline   bLaCkRaBbIt 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.396
  • Beigetreten: 08. November 04
  • Reputation: 2
  • Geschlecht:Männlich
  • Wohnort:Karlsbad

geschrieben 09. Februar 2009 - 10:17

prüf erst mal im programm, ob du zugriff auf die shudown.exe in windows xp bekommst! ich denke da liegt der hund begraben
0

#5 _Der dom_

  • Gruppe: Gäste

geschrieben 09. Februar 2009 - 11:26

Zugriff an sich bekomme ich, kann den Rechner per CMD-Shutdown -s runterfahren nur per .net funktioniert es nicht.

Abmelden, Neustarten etc. klappt 100%
0

#6 Mitglied ist offline   def 

  • Gruppe: aktive Mitglieder
  • Beiträge: 386
  • Beigetreten: 19. Dezember 06
  • Reputation: 7
  • Geschlecht:Männlich

geschrieben 09. Februar 2009 - 14:07

Schon mal mit ExitWindowsEx() probiert? Siehe z.B. Lock, Logoff, Reboot, Shutdown, Hibernate, Standby in .Net.

Viele Grüße
Def
Eingefügtes Bild
0

#7 _Der dom_

  • Gruppe: Gäste

geschrieben 26. Februar 2009 - 13:47

Bin jetzt nach längerer Zeit nochmal dazu gekommen, das ganze auszuprobieren! Jetzt hab ich mir was passendes gestrikt aber nun mault VB.net "ExitWindowsEx wurde nicht in der DLL user32.dll gefunden"

Und jetzt erhalte ich nicht mal mehr eine Fehlermeldung, was ist das für ein Krampf....nichts verändert und jetzt nicht mal mehr ne meldung....hmmm

Was hat er denn jetzt wieder für ein Problem? Das dusselige Teil macht mich wahnsinnig

Fehlt mir eventuell noch ein Verweis?

Hab auch das Se_Shutdown_privilege berücksichtigt und auch auf die Token geachtet!

Dieser Beitrag wurde von Der dom bearbeitet: 26. Februar 2009 - 14:17

0

#8 Mitglied ist offline   def 

  • Gruppe: aktive Mitglieder
  • Beiträge: 386
  • Beigetreten: 19. Dezember 06
  • Reputation: 7
  • Geschlecht:Männlich

geschrieben 08. März 2009 - 18:23

Hi,

ist das Problem noch aktuell?
Ich kenne natürlich Deinen Quelltext nicht und auch nicht Deine genauen Systemvoraussetzungen, aber ich habe es jetzt auf meinem eigenen Rechner ausprobiert. Der Quelltext (am Schluss dieses Postings) basiert auf Beispielcode von Microsoft.
Benutzt habe ich Visual Studio 2005 Standard Edition (deutsch) unter Windows XP Home (deutsch).
Hier die Schritte zum Nachvollziehen:
  • Neues C++-Projekt starten
  • CLR-Konsolenanwendung auswählen
  • Als Namen habe ich my_reboot_app gewählt
  • In die Datei my_reboot_app.cpp den unten angegebenen Quelltext eintragen (den von VS eventuell vorgegebenen Quelltext vorher löschen)
  • Projekt -> my_reboot_app-Eigenschaften... -> Konfigurationseigenschaften -> Linker -> Eingabe -> Zusätzliche Abhängigkeiten: Dort die Vorgabe $(NoInherit) löschen und durch user32.lib ersetzen.
  • Erstellen -> my_reboot_app neu erstellen
my_reboot_app kann dann als normaler Benutzer gestartet werden und löst wie erwartet einen Neustart aus.
Wenn sich das Problem inzwischen erledigt hat: Auch kein Problem, aber es wäre nett, wenn Du kurz Bescheid sagen könntest. :)

Viele Grüße
Def

CODE
#include "stdafx.h"
#include <iostream>
#include <windows.h>

BOOL MySystemShutdown();

int main()
{
if(!MySystemShutdown())
std::cout << "Reboot geht nicht (warum auch immer)" << std::endl;
return 0;
}

BOOL MySystemShutdown()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;

// Get a token for this process.

if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return( FALSE );

// Get the LUID for the shutdown privilege.

LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);

tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

// Get the shutdown privilege for this process.

AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);

if (GetLastError() != ERROR_SUCCESS)
return FALSE;

// Shut down the system and force all applications to close.

if (!ExitWindowsEx(EWX_REBOOT | EWX_FORCE,
SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
SHTDN_REASON_MINOR_UPGRADE |
SHTDN_REASON_FLAG_PLANNED))
return FALSE;

//shutdown was successful
return TRUE;
}

Eingefügtes Bild
0

#9 _Der dom_

  • Gruppe: Gäste

geschrieben 09. März 2009 - 15:11

Mahlzeit Def,

danke erstmal für deine Bemühungen. Also der C++ Snippet funktioniert einwandfrei mit dem Reboot! Das war allerdings nicht das eigentliche Problem, sondern der Shutdown an sich. Und die Sprache war VB.net :D . Ist aber nicht arg zu tragisch, da sich das Problem selbst gelöst hat ohne mein Zutun und ich habe mal keine Ahnung woran das lag!
0

Thema verteilen:


Seite 1 von 1

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