Windows Unterbrechungsfreien Stromversorgung (USV) service - schalten Sie UPS?
Ich bin mit der USV-Dienst zum überwachen des Status von "mein UPS" - aus einer Anwendung-der Schlüssel unter HKLM\SYSTEM\CCS\Services\USV\Status hat alle Informationen, die Sie bekommen können von der Power-control-panel. ABER-ich möchte sagen zu können, dass die USV zum Herunterfahren von meiner app als auch. Ich weiß, dass der service sagen kann die USV heruntergefahren werden-zum Beispiel, nach dem ausführen einer bestimmten Anzahl von Minuten auf Batterie-und ich Frage mich, ob es gibt irgendeine Art von Befehl, den ich senden kann, um den service zu initiieren, die eine Abschaltung manuell.
Ich habe Probleme bei der Suche nach diesen Informationen-die Menschen neigen dazu, falsch schreiben "Unterbrechungsfreie" (hrm, Firefox-rot-gesäumt, aber keine alternative) und "UPS" nur bekommt, trifft für den Versand-service. Vielleicht kann ich etwas tun, durch das System.ServiceController-oder WMI?
KLARSTELLUNG: ja, ich spreche Herunterfahren des physischen USV-Gerät. Ich weiß, wie man den Dienst beenden. Ich dachte, es wäre ein Allgemeines problem-ich möchte meine USV ausschalten, mit dem PC. Ich hatte eine Idee, ich werde versuchen, basierend auf auf dieser Seite. Sie sehen, APC (und alle anderen) zu liefern hat, eine DLL für den USV-Dienst zu nennen, und da die Funktionsaufrufe sind gut dokumentiert, es gibt keinen Grund, dass ich nicht in der Lage sein, zu P/Invoke. Ich werde dann weiter Bearbeiten, wenn ich weiß, ob oder nicht es hat funktioniert.
Update: ich habe versucht, Aufruf UPSInit, dann UPSTurnOff, und nichts passiert. Ich werde basteln Sie etwas mehr, aber der direkte Aufruf apcups.dll möglicherweise ein dead end.
InformationsquelleAutor Coderer | 2008-12-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie meine Kommentare zu Herman, Sie wollen, schalten Sie die USV nach unten, nicht den USV-DIENST, richtig? Ich meine, Sie wollen das Ding abzuschalten, zu töten, die macht, etc, richtig?
Wenn ja, sind Sie auf der Suche ist es, auf ein USV-UPS Modell. Ich bezweifle, dass zwei von Ihnen würde die gleiche Arbeit.
In Ihre sucht, anstelle von UPS, die versuchen, "APC" oder "Batterie". Ich denke, dass viel von dem code ist das, was läuft auf laptops werden zu beschäftigen, Batterie, etc...
Einiger Platz versteckt in einigen staubigen alten Dateien, die ich haben Protokoll-Informationen für APC USV ' s, und die Befehle, auf die Sie reagieren, und was Sie senden an den PC etc. Aber dies war WEG zurück in den Tag, als wir verbinden unsere USV ' s zu unseren Computern mit SERIELLEN Kabel... könnte Man tatsächlich sprechen Sie eine USV mit Qmodem oder Hyperterm...
Gelernt, aus Gesprächen mit den Jungs von APC. Sie sind sehr nett und hilfsbereit. Jetzt-a-Tage, ich denke, dass Sie einfach eine URL aus der Powerchute-software, und es wird sprechen Sie direkt mit der USV und ausführen von Befehlen.
InformationsquelleAutor LarryF
OK, die Antwort habe ich (getestet!), aber es ist nicht schön. Meine APC USV kommuniziert mit dem APC "Smart" - Protokoll (mehr hier). Was Sie brauchen, in meinem Fall ist ein "soft-shutdown", "S" - Befehl. Aber zuerst müssen Sie sicherstellen, dass es in "Smart" - Modus ("Y"). Nun, wenn Sie wollen, lassen Sie die Windows USV-Dienst überwachen Zustand, der service haben einen eisernen Griff auf den COM-port. So können Sie entweder a) lassen Sie den Windows-Dienst die USV auszuschalten, oder b) töten, der service und schalten Sie die USV aus sich selbst.
Sich die USV selbst hat eine "grace period" nach, bekommt es das "S" - Befehl, so dass Sie Zeit zum Herunterfahren Ihres Betriebssystems. Dies bedeutet, dass (a) oben, haben Sie zu:
Ich denke wir gehen, entscheiden sich für (a), nur weil (b) erfordert zusätzliche Arbeit, die Tötung der service und die Umsetzung der seriellen Kommunikation.
InformationsquelleAutor Coderer
Bitte sagen, in welcher Sprache wollen Sie tun, dass..., wenn Sie verwenden .NET können Sie dies mit der ServiceController-Klasse (Lesen der Dokumentation).
For controlling services in Win32 API mit C/C++, Service-Funktionen (Windows).
Beispielsweise um einen Dienst zu stoppen, die Sie verwenden können ControlService-Funktion wie folgt (dies ist ein quick-and-dirty-Beispiel):
Beachten Sie, dass Sie benötigen, um eine Service-Manager-Griff in hServMgr und \\UPS_SERVICE_0 der name ist, muss übereinstimmen mit Ihrem gewünschten USV-Dienst (entweder mit dem Windows integrierten oder einem anderen).
Denken Sie daran, dass, um einen Dienst beenden, müssen Sie die richtige Sicherheits-Rechte. Dies ist kein problem, mit einem Administrations-account, aber im Kopf behalten, was passiert, wenn bei der Anmeldung mit einem nicht-admin-Konto.
Hoffe, das hilft.
Über das Herunterfahren des physischen USV-Gerät, ich erinnere mich zurück in den WIn98-Tagen war ich in der Lage, poweroff das Gerät zu sprechen, die mit der USV über den COM-port, obwohl ich mich nicht erinnern, die Marke, oder wie die Programmierschnittstelle wurde.
Sorry, ja, er bedeutet ein Herunterfahren des physischen UPS! Ich habe nicht eine Antwort für das problem. Viele USV-Systeme gesteuert werden können über COM1 oder USB-ports jedoch.
InformationsquelleAutor Hernán