Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bios einstellen über Delphi (https://www.delphipraxis.net/115847-bios-einstellen-ueber-delphi.html)

SaFu 18. Jun 2008 21:26


Bios einstellen über Delphi
 
Hi

Hab mal ne Frage wegen dem Bios.

Kann man mit einem Selbstgeschriebenen Programm in Delphi änderungen im Bios vornehemen z.b. Einschalt Zeitpunkt.

Wenn ja habt Ihr vielleicht einen Ansatz und wie ist es wenn das BIOS Passwort geschützt ist


Gruss Sascha

Luckie 18. Jun 2008 21:48

Re: Bios einstellen über Delphi
 
Zitat:

Zitat von fuknersascha
Wenn ja habt Ihr vielleicht einen Ansatz und wie ist es wenn das BIOS Passwort geschützt ist

Dann sollte es sowieso nicht gehen. Warum willst du das aus Delphi raus machen?

Muetze1 19. Jun 2008 00:21

Re: Bios einstellen über Delphi
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von fuknersascha
Wenn ja habt Ihr vielleicht einen Ansatz und wie ist es wenn das BIOS Passwort geschützt ist

Dann sollte es sowieso nicht gehen. Warum willst du das aus Delphi raus machen?

Wie kommst du darauf? Bzw.: wodrauf begründet sich deine Aussage?

SaFu 19. Jun 2008 06:17

Re: Bios einstellen über Delphi
 
Ich lasse mein Rechner mit einem Programm von mir, Automatisch runterfahren und stelle das auch in meiner Software ein, zu welchem Zeitpunkt.

Jetzt lasse ich den Rechner auch immer zu einer gewissen Uhrzeit wieder hochfahren, das habe ich im Bios eingestellt.

Und da ich keine lust habe immer wieder in Bios zugehen, wenn ich den Rechner zum anderen Zeitpunkt hochfahren lassen will, habe ich mir gedacht vieleicht kann ich das ja mit Delphi machen.

Das ist der Grund

Codehunter 19. Jun 2008 07:57

Re: Bios einstellen über Delphi
 
Für sowas hab ich mir ne programmierbare Relaisschaltung gebaut (serielle Ansteuerung). Der Rechner wird komplett vom Strom getrennt was ja auch Strom spart. Im BIOS einstellen "Restart at AC power loss" oder so ähnlich und wenn der Saft kommt fährt der Laden wieder hoch.

FAlter 19. Jun 2008 08:08

Re: Bios einstellen über Delphi
 
Hi,

Zitat:

Zitat von Codehunter
Für sowas hab ich mir ne programmierbare Relaisschaltung gebaut (serielle Ansteuerung). Der Rechner wird komplett vom Strom getrennt was ja auch Strom spart. Im BIOS einstellen "Restart at AC power loss" oder so ähnlich und wenn der Saft kommt fährt der Laden wieder hoch.

Dann lieber automatisch herunterfahren z. B. 15 Minuten vor dem Absachalten (ohne autom. reichen Updates 5 Minuten, 2 Minuten herunterfahren und 3 Minuten nachkühlen). Dann darf "After Power Loss" (wie es bei mir heißt) zwar nicht auf "Last State" eingestellt sein, sonern "Always On", aber ansonsten gute Idee. (Ich persönlich nutze einen manuellen Schalter uns Spare auch die 5€/a für die Stromversorgung des Schalters. :P )

Im übrigen können alle BIOS-Einstellungen auch ohne das BIOS getätigt werden, da dieses ja auch "nur" eine Software ist. Es kann aber sein, dass das OS das aus Sicherheitsgründen verweigert. Windows lässt einen eingeschränkten Nutzer ja nicht einmal die Uhr verstellen. Unter DOS wäre es aber garantiert irgendwie möglich.

Mfg
FAlter

Luckie 19. Jun 2008 08:08

Re: Bios einstellen über Delphi
 
Zitat:

Zitat von Muetze1
Zitat:

Zitat von Luckie
Zitat:

Zitat von fuknersascha
Wenn ja habt Ihr vielleicht einen Ansatz und wie ist es wenn das BIOS Passwort geschützt ist

Dann sollte es sowieso nicht gehen. Warum willst du das aus Delphi raus machen?

Wie kommst du darauf? Bzw.: wodrauf begründet sich deine Aussage?

Wie auch immer, er müsste die Daten genauso wie es das BIOS erwartet in den EPROM schreiben. Das erste Problem dürfte sein, wie die Daten aussehen müssen und an welche Adresse sie geschrieben werden müssen. Das nächste dürfte sein dies über Windows zu realisieren. Da Windows Hardware Zugriffe nicht aus dem Usermode erlaubt, müsste ein Treiber geschrieben werden, aber selbst dann ist es zweifelhaft, ob Windows überhaupt irgendwas zur Verfügung stellt, um auf den EPROM des BIOS zu zugreifen.

RavenIV 19. Jun 2008 08:21

Re: Bios einstellen über Delphi
 
Mach dich mal per google auf die suche nach "NVRAM" oder so ähnlich.
Zumindest kenn ich das von Linux her, dass man dem PC beim Runterfahren eine Zeit für das nächste Aufwachen mitgeben kann.
Das können aber leider nicht alle BIOS, sie müssen dafür eben das NVRAM haben.

SaFu 19. Jun 2008 08:23

Re: Bios einstellen über Delphi
 
Gut habe ein paar Bios Editoren gefunden, nur das dumme ist man brauch ja für die unterschiedlichen Boards, auch unterschiedliche Editoren.

Naja Thema hat sich erledigt wäre schön gewesen.

Danke trotzdem

hathor 19. Jun 2008 08:39

Re: Bios einstellen über Delphi
 
Zitat:

Zitat von RavenIV
Das können aber leider nicht alle BIOS, sie müssen dafür eben das NVRAM haben.

NVRAM haben ALLE!

Muetze1 19. Jun 2008 08:45

Re: Bios einstellen über Delphi
 
Zitat:

Zitat von Luckie
Wie auch immer, er müsste die Daten genauso wie es das BIOS erwartet in den EPROM schreiben. Das erste Problem dürfte sein, wie die Daten aussehen müssen und an welche Adresse sie geschrieben werden müssen. Das nächste dürfte sein dies über Windows zu realisieren. Da Windows Hardware Zugriffe nicht aus dem Usrmode erlaubt, müsste ein Treiber geschrieben werden, aber selbst dann ist es zweifelhaft, ob Windows überhaupt irgendwas zur Verfügung stellt, um auf den EPROM des BIOS zu zugreifen.

Ich vermute einfach mal, dass du den Teil in der Ausbildung noch nicht hattest, weil so ist das Mumpitz.

Das BIOS hatte früher einen CMOS Speicher auf der Platine, welche seine Einstellungen aufgenommen hatte (Portadresse 0x40 Adressselektion, Portadresse 0x41 Datenport). Dieser CMOS Speicher war durch eine onboard Pufferbatterie versorgt. Später hatte Dallas ihre RealtimeClocks recht erfolgreich vermarktet, da diese pinkompatibel waren zu den CMOS Schaltkreisen und die Batterie gleich mitbrachten.

Nun Reichen die 256 Speicherstellen nicht mehr aus und es würde das sogenannte NVRAM (non volatile RAM) eingeführt, welcher heutzutage direkt im Chipsatz liegt (genauso wie der BIOS Flash-Speicher, meist doppelt ausgelegt (DualBIOS) um die Auswirkungen von Flashfehlern zu verringern). Dieser NVRAM wird über eine Chipsatz Unterfunktion angesprochen und von daher findet man Adressen und Ports zum Zugang zum NVRAM in den Resourcen des Chipsatzes.

EPROM sind schon recht schnell in den 90'ern durch EEPROMs ersetzt worden und dann nochmals durch Flash Speicher, wo diese bezahlbar wurden (bzw. zur Massenware).

Zitat:

Zitat von hathor
NVRAM haben ALLE!

NVRAM ist eine Namenszusammenfassung für alle nichtflüchtigen Speicher und als Schlagwort für die Konfigurationsablage genutzt. Die damalige Kombination von CMOS und Pufferbatterie hätte man auch als NVRAM bezeichnen können, aber heutzutage steht dies eher auch als gleichbedeutend mit dem neuen Interface über den der Speicherbereich/Speicher angesprochen wird. Somit kann ich dir dort widersprechen: es haben nicht alle einen solchen Speicher - ab einem gewissen Baujahr und Entwicklungsstand bestimmt, aber alle älteren Mainboards sind davon ausgeschlossen.

Auch hat man für den Nachfolger des BIOS, dem EFI (Enhanced Firmware Interface), einen neuen Begriff gefunden und nennt es afaik nicht mehr NVRAM.

/EDIT: Rechtschreibfehler korrigiert.

hathor 19. Jun 2008 10:12

Re: Bios einstellen über Delphi
 
@Muetze1:

Kleine Korrektur:
Falsch: non violateable
Richtig: non volatile

Mehr Infos:
http://en.wikipedia.org/wiki/Non-volatile_memory

devidespe 19. Jun 2008 10:54

Re: Bios einstellen über Delphi
 
Im Prinzip kann jeder Mainboardhersteller die Belegung des NVRAM beliebig ändern, und man müsste eigentlich herausfinden, in welchen Bits/Bytes die Einstellungen gespeichert werden. Dafür bleibt nur die Try-Methode, also ein NVRAM-Speicherabbild erzeugen, die Optionen anpassen, und erneut ein Speicherabbild erzeugen bzw. die Ergebnisse vergleichen. Hier hilft Dir evtl. das Programm CMOSInfo (hier) bzw. dessen PDF-Anleitung. Grundsätzlich ist dieses Verfahren aber relativ mühselig und fehlerträchtig.

Falls Du ein Award-BIOS hast, könnte das Modbin6-Programm vielleicht helfen. Hierfür benötigtst Du neben dem eigentlichen Programm (welches übrigens nicht offiziell erhältlich ist, Google hilft aber) eine BIOS-BIN-Datei, die Du Dir entweder vom Mainboardhersteller herunterlädst oder mit der Backup-Option eines BIOS-Flash-Programms erstellst. Anschließend stellt Modbin6 den Inhalt des BIOS-Images dar, wozu mitunter auch die versteckten BIOS-Optionen gehören. Dort suchst Du die Option "Restore Restart at AC power loss" o.ä, und kannst Dir in den Eigenschaften anzeigen lassen, welche NVRAM-Register dazu verwendet werden.

Soweit ich aber weiß, erfolgen die NVRAM-Zugriffe über Ports, und die erfordern wiederum einen Gerätetreiber und Admin-Rechte. Der Aufwand ist also immens und nur für eine spezielle Gruppe von Zielrechnern erfolgreich. Solltest Du ein AMI- oder Phoenix-BIOS oder sogar EFI haben, sehen die Chancen proportional schlechter aus.

hathor 19. Jun 2008 11:31

Re: Bios einstellen über Delphi
 
SleepAndWakeUp

http://www.mirrorservice.org/sites/f...ll/aspower.zip

int asSleepAndWakeUpS(int n);
int asSleepAndWakeUp(int nDay,int nH,int nM,int nS);

First function have just one parameter, number of seconds. This will be time interval.
Another function will use more. You will set after what time interval you want PC to
wake UP. Remember, after you call this function, we create wait timer function and we
put PC to sleep. PC must have new motherboard with ACPI support.

----------------

int asOnlySetWakeUpTime(int nYear,
int nMonth,
int nDay,
int nHour,
int nMinute,
int nSecond);

This function will ONLY SET TIME when you want your PC to wake up. So, after
calling this function, you can continue working with your application, but put your PC to
sleep before this time. Please we don’t check these parameters, so YOU MUST provide
parameters checking. That moment of time MUST be after current time.

Codehunter 19. Jun 2008 15:58

Re: Bios einstellen über Delphi
 
NVRAM kenne ich aus dem Embedded-Linux-Bereich wo Bootloader, Kernel und Konfiguration in verschiedenen Bereichen des selben Flash-RAM liegen. Da gibts dann so Linux-Tools wie nvset und nvread. Aber das hat im Grunde nichts mit dem PC-BIOS zu tun.

RavenIV 19. Jun 2008 16:11

Re: Bios einstellen über Delphi
 
Ich hab da mal ein Code-Schnipsel aus dem nvram-wakeup unter Linux.
Vielleicht kannst Du damit was anfangen:

Code:

################################################
## Mainboard autodetection information:
##
## - Mainboard vendor: "MICRO-STAR INTERNATIONAL CO., LTD"
## - Mainboard type: "MS-6119 (i440BX)"
## - Mainboard revision: "1.X"
## - BIOS vendor: "Award Software International, Inc."
## - BIOS version: "4.51 PG"
## - BIOS release: "08/21/00"

addr_stat = 0x46
addr_day = 0x47
addr_hour = 0x48
addr_min = 0x49
addr_sec = 0x4A
addr_chk_h = 0x6F
addr_chk_l = 0x70

need_reboot = ON_ANY_CHANGE
Gefunden bei http://www.vdr-portal.de/board/search.php mit Suchbegriff "nvram".
Oder direkt dieser Beitrag:
http://www.vdr-portal.de/board/threa...&hilight=nvram

SaFu 19. Jun 2008 16:20

Re: Bios einstellen über Delphi
 
Wie gesagt ich glaube das ganze hatte sich schon erledigt, weil wenn ich sowas mache dann muss es für "alle" boards gehen.

Und Kompliziert sieht es auch aus.

zudem kommt noch dazu wenn ich jemanden das Programm geben sollte und irdgenwas schießt sich ab und die bekommen raus das mein Programm im Bios rumfummelt.

Wer haftet dann, ich? nein danke

Wer von euch, hat lust von jemandem ein Programm zunehmen das im NVRAM rummacht

devidespe 19. Jun 2008 16:23

Re: Bios einstellen über Delphi
 
Bietet der Scheduler oder die Aufgabenplanung keine Möglichkeit, den PC zeitgesteuert einzuschalten ?

SaFu 19. Jun 2008 16:25

Re: Bios einstellen über Delphi
 
Soweit wie mir bekannt ist, geht das nur im BIOS, aber ich lasse mich gerne eines bessern belehren.

devidespe 19. Jun 2008 16:46

Re: Bios einstellen über Delphi
 
Ich bin mir nicht sicher, kann mich aber wage erinnern, so etwas im Hotline-Bereich einer der letzten c't-Ausgaben gelesen zu haben. Einfach mal auf deren Seite suchen.

RWarnecke 19. Jun 2008 16:50

Re: Bios einstellen über Delphi
 
Zitat:

Zitat von devidespe
Bietet der Scheduler oder die Aufgabenplanung keine Möglichkeit, den PC zeitgesteuert einzuschalten ?

Wie willst Du das machen, wenn Du den Rechner physikalisch am Einschaltknop ausschaltest ? Dann ist das Betriebsystem nichtmehr geladen. Das einzigste, was ich mir vorstellen kann, ist wenn ich den Rechner in den Standbymodus stelle, dass es dann eine Funktion gibt, mit der ich den Rechner wieder aus dem Standbymodus wecken kann.

Der.Kaktus 19. Jun 2008 16:57

Re: Bios einstellen über Delphi
 
Zitat:

Zitat von RWarnecke
Zitat:

Zitat von devidespe
Bietet der Scheduler oder die Aufgabenplanung keine Möglichkeit, den PC zeitgesteuert einzuschalten ?

Wie willst Du das machen, wenn Du den Rechner physikalisch am Einschaltknop ausschaltest ? Dann ist das Betriebsystem nichtmehr geladen. Das einzigste, was ich mir vorstellen kann, ist wenn ich den Rechner in den Standbymodus stelle, dass es dann eine Funktion gibt, mit der ich den Rechner wieder aus dem Standbymodus wecken kann.

Also mit Wake on Lan geht das schon..sowas machen wir naemlich bei der Softwareverteilung ;-)

SaFu 19. Jun 2008 18:26

Re: Bios einstellen über Delphi
 
Das sowas mit WakeOnLan funktioniert ist mir bekannt und das der Rechner für irgenwelche sachen im Standby modus sein muss um Ihn Hochzufahren auch.

Hab jeglich nach der möglichkeit gefragt über Delphi das Automatische hochfahren gefragt und das kann auch nicht jedes Board(Bios).

Wie gesagt dann hat sich das wohl erledigt

Danke euch trotzdem

phade 18. Jul 2009 17:48

Re: Bios einstellen über Delphi
 
Ich weiss, dass das Thema nun einen Monat alt ist, aber falls noch Interesse an einer Lösung besteht:

Es gibt 2 Möglichkeiten, den Computer aus Standby oder Hibernate zu wecken.

Zunächst mit der Windows API. Das Zauberwort heisst hier [msdn]http://msdn.microsoft.com/en-us/library/ms686289%28VS.85%29.aspx[/msdn]. Man erzeugt einen solchen Timer, schickt das System dannach in Standby/Hibernate. Falls der Parameter 6 (fResume) als true übergeben wurde, weckt der Timer das System, sobald er getriggert wird.

Die 2. Möglichkeit geht über das BIOS, dazu benötigt man aber IO-Zugriff. Ich verwende derzeit WinRing0 (OpenLibSys), da sie zertifizierte Treiber sowohl für 32, als auch 64 bit mitliefern.
Da meine Entwicklung auch noch in den Kinderschuhen steckt, kann ich leider keinen Delphi-Source posten. Aber folgende Quellen habe ich als Referenz genommen:

Quelle #1
Quelle #2

Falls noch Interesse besteht, würde ich in Zukunft weitere Infos oder Source beitragen.

Codehunter 18. Jul 2009 18:13

Re: Bios einstellen über Delphi
 
Ein Monat ist gut :-D - Eher ein Jahr und ein Monat... Aber nichtsdestotrotz sind Antworten und Ideen immer willkommen!

hathor 19. Jul 2009 13:54

Re: Bios einstellen über Delphi
 
Mit googlen nach "SHUTDOWN wake up flag" findet man viel.

Ausserdem:
Es gibt YARD:

http://eldo.gotdns.com/

Es enthält einen Y.A.R.D. Recording Assistent.
Eine der vielen Funktionen ist:
Power On - via Timer - d.h. Hochfahren des PC zu einer bestimmen Uhrzeit & Datum

http://eldo.gotdns.com/yard/download...2009_07_19.zip

----------------------------------------------------------------------------------------

WakeupOnStandBy

http://www.dennisbabkin.com/php/download.php?what=WOSB
http://www.dennisbabkin.com/php/docs.php?what=wosb
http://www.dennisbabkin.com/php/download.php?go=WOSB


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:04 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