Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Programm bei Systemstart ausführen wie chkdsk? (https://www.delphipraxis.net/169637-programm-bei-systemstart-ausfuehren-wie-chkdsk.html)

jus 1. Aug 2012 20:43

Programm bei Systemstart ausführen wie chkdsk?
 
Hallo,

Man kann ja in Windows das Festplattentool chkdsk so einstellen, dass es gestartet wird, bevor überhaupt der Windowsanmeldeschirm kommt. Das Programm scheint auch einen Konsolentext auszugeben.
Ich frage mich wie kann man sowas machen?

Lg,
jus

Dawn87 1. Aug 2012 20:47

AW: Programm bei Systemstart ausführen wie chkdsk?
 
Für solche Anwendungen ist Delphi nicht das Mittel der Wahl.

Du musst auf die Native Api zurückgreifen um solche Programme zu schreiben. Auch einige PE-Flags der EXE sind bei nativen Anwendungen anders gesetzt als bei normalen Windows-Anwendungen.

http://technet.microsoft.com/en-us/s.../bb897447.aspx

Möglicherweise bringt Dich hier Visual C im Zusammenhang mit dem DDK (Driver Developement Kit) weiter.

Grüße
Stefan

p80286 1. Aug 2012 21:40

AW: Programm bei Systemstart ausführen wie chkdsk?
 
Schau doch mal hier herein.

Gruß
K-H

hathor 2. Aug 2012 08:26

AW: Programm bei Systemstart ausführen wie chkdsk?
 
Registry - Runonce

The Runonce key allows you to run an application on the next boot. Once it runs, the Value is removed.

Location:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\RunOnce

Values: Any name. Data should be the path to application you want to run.

Value Type: String

Dawn87 2. Aug 2012 08:54

AW: Programm bei Systemstart ausführen wie chkdsk?
 
Anwendungen die im RunOnce-Schlüssel stehen werden aber auch erst ausgeführt, nachdem sich ein Benutzer bei Windows angemeldet hat.

Was jus möchte ist eine Anwendung auszuführen bevor die Windows-Oberfläche überhaupt angezeigt wird. Bei Windows XP gab es z.B. eine Konsole mit hellblauem Hintergrund. Die hat man immer dann gesehen wenn chkdsk oder ein Partitionierungsprogramm wie Partition Magic ausgeführt wurde.

Diese Programme sind anders aufgebaut als herkömmliche, da diese sich der Native Api bedienen. Da zu dem Boot-Zeitpunkt noch einiges an Funktionen nicht angesprochen werden kann, wird man auch nichts anderes benutzen können.

JamesTKirk 2. Aug 2012 08:56

AW: Programm bei Systemstart ausführen wie chkdsk?
 
@hathor: Das ist nicht das, wonach jus gefragt hat. Da ist es nämlich schon zu spät.

@jus: Gibt es einen bestimmten Grund, warum du das erfahren möchtest? Dawn87 hat hier aber in großen Teilen Recht: Anwendungen wie chkdsk sind sogennante Native NT Anwendungen, welche nicht die Windows API verwenden, sondern die darunterliegende API des Kernels (für Usermodeanwendungen bereitgestellt durch ntdll.dll). Dort ist es für einen normalen Windows Entwickler sehr ungewohnt, da sich die API doch teilweise stark unterscheidet.
Eine Anwendung, welche derart früh (nach dem Start von smss.exe und vor dem Start der Subsysteme) gestartet werden möchte, muss sich in den passenden Registry-Key eintragen und eben eine native Anwendung sein (sonst könnte es zum Bluescreen kommen ;) ).

@Dawn87: Delphi ist hier nicht geeignet, aber Free Pascal befindet sich dank mir auf gutem Weg dorthin ;)

Gruß,
Sven

jus 6. Aug 2012 00:09

AW: Programm bei Systemstart ausführen wie chkdsk?
 
Vielen Dank für eure antworten!
Zitat:

Zitat von JamesTKirk (Beitrag 1176650)
@hathor: Das ist nicht das, wonach jus gefragt hat. Da ist es nämlich schon zu spät.

@jus: Gibt es einen bestimmten Grund, warum du das erfahren möchtest? Dawn87 hat hier aber in großen Teilen Recht: Anwendungen wie chkdsk sind sogennante Native NT Anwendungen, welche nicht die Windows API verwenden, sondern die darunterliegende API des Kernels (für Usermodeanwendungen bereitgestellt durch ntdll.dll). Dort ist es für einen normalen Windows Entwickler sehr ungewohnt, da sich die API doch teilweise stark unterscheidet.
Eine Anwendung, welche derart früh (nach dem Start von smss.exe und vor dem Start der Subsysteme) gestartet werden möchte, muss sich in den passenden Registry-Key eintragen und eben eine native Anwendung sein (sonst könnte es zum Bluescreen kommen ;) ).

@Dawn87: Delphi ist hier nicht geeignet, aber Free Pascal befindet sich dank mir auf gutem Weg dorthin ;)

Gruß,
Sven

Einen bestimmten Grund gibt es eigentlich nicht, es war einfach interessenshalber wie man sowas machen kann. Das mit native API scheint mir vom Aufwand zu sehr hoch sein. Interessant ist aber der weg mit freepascal schon.

Lg,
Jus

Medium 6. Aug 2012 00:20

AW: Programm bei Systemstart ausführen wie chkdsk?
 
FP wird da auch nicht viel dran drehen können, dass man eine völlig andere Umgebung als gewohnt vor sich hat. Ich denke mal, dass es hier eher darum geht, dass man es überhaupt in einer Pascal-Sprache bewerkstelligen kann. Der Aufwand wird am Ende wohl nahezu der selbe sein. Bei sowas merkt man immer wieder, dass Delphi (bzw. die VCL) ein evtl. doch zu weiches Kissen im Werdegang von manchem ist ;)

JamesTKirk 6. Aug 2012 10:17

AW: Programm bei Systemstart ausführen wie chkdsk?
 
Zitat:

Zitat von Medium (Beitrag 1177003)
FP wird da auch nicht viel dran drehen können, dass man eine völlig andere Umgebung als gewohnt vor sich hat. Ich denke mal, dass es hier eher darum geht, dass man es überhaupt in einer Pascal-Sprache bewerkstelligen kann. Der Aufwand wird am Ende wohl nahezu der selbe sein. Bei sowas merkt man immer wieder, dass Delphi (bzw. die VCL) ein evtl. doch zu weiches Kissen im Werdegang von manchem ist ;)

Vergiss nicht, dass Free Pascal schon zahlreiche Plattformen erfolgreich abstrahiert hat. Unter anderem DOS, Linux, Windows, Mac OS (Classic!), Amiga und OS/2. Diese unterscheiden sich hinsichtlich ihrer API schon immens und die Native NT API ist hier in recht guter Gesellschaft, auch wenn sie zuerst einmal ungewohnt (und auch noch dazu nur spärlich dokumentiert) ist.

Mein Port bettet sich ganz brav in die Abstraktionsschicht von FPC ein und so kannst du zum Beispiel Dateiein-/ausgabe, FindFirst/-Next/-Close und so weiter ohne Probleme bereits verwenden. Die einzigen (großen) Grundfunktionen, die noch fehlen sind Threading und "Anzapfung" des Exceptionhandlings von NT (welches zum Glück von der Win32 API auch einfach nur durchgereicht wird zur NT API ;) ).

Und um den Entwicklern das Schreiben von Startupanwendungen zu erleichtern, möchte ich auch die Units CRT, Video, Keyboard, Mouse und wenn möglich auch Graphics und Sockets implementieren. Da der Native NT Port allerdings nur eines von vielen meiner Projekte ist, geht das aber nur recht gemächlich voran :roll:

Gruß,
Sven

CCRDude 6. Aug 2012 10:24

AW: Programm bei Systemstart ausführen wie chkdsk?
 
Es gibt inzwischen ein NativeNT-Target für FPC? Das ist ja absolut genial :)

Ich erinnere mich noch, wie ich vor einigen Jahren sowas angefangen hatte, dann aber aus Bequemlichkeit doch auf C ausgewichen bin.

Ein megariesengroßes Dankeschön (und ich gehöre nicht zu den Menschen, die zu Superlativen neigen)!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:29 Uhr.
Seite 1 von 3  1 23      

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