Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Laufwerk formatieren, still im Hintergrund ohne Fenster (https://www.delphipraxis.net/62289-laufwerk-formatieren-still-im-hintergrund-ohne-fenster.html)

kalmi01 2. Feb 2006 16:32


Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Hi,

in meinem Prog möchte ich bei Bedarf und automatisch eine RAMDISK formatieren.
Dies soll ohne Interaktionen mit dem Anwender im Hintergrund geschehen.

Da der Anwender aber keine Berechtigung hat, zu Formatieren, holt sich mein
Prog Adminrechte.

Das Problem dabei ist, dass dieser Code
Delphi-Quellcode:
ShellExecute(0,
             Nil,
             PChar('cmd'),
             Pchar('/C ECHO j | FORMAT B: /FS:FAT /V:RAMDISK'),
             Pchar(''),
             SW_HIDE);
unter dem User-Account läuft.
Und somit seinen Dienst versagt.

ringli 2. Feb 2006 16:38

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Wozu formatierst du eine RAM-Disk?
Kannst du die RAM-Disk nicht einfach abschalten und neu erzeugen? Ich vermute mal das das einfacher wäre...

kalmi01 2. Feb 2006 16:43

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Weil die RAMDISK, die ich verwende, sich wie ein echtes Laufwerk verhält.
Genau deshalb verwende ich sie.

D.h. aber: sie MUSS formatiert werden um sie nutzen zu können.

ringli 2. Feb 2006 17:37

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Hilft dir vielleicht CreateProcessWithLogonW weiter? In diesem Thread könnte die Lösung deines Problems stecken.

kalmi01 2. Feb 2006 18:17

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Danke,

sieht auf den ersten Blick gut aus.
Habs zwar noch nicht getestet, aber zumindest scheinen Andere bereits ähnliche Probleme gehabt zu haben.
Das beruhigt.

Schöner wäre aber eine "echte" Delphi-Lösung, also ohne DOS-Kommando.
Zitat:

ECHO j | FORMAT B: /FS:FAT /V:RAMDISK'
hat den Nachteil, dass ich für "ECHO j" ja den richtigen Buchstaben verwenden muss.
Also bei englischem Windows ein "y", beim französischen ein "o", usw.

thomasw 2. Feb 2006 19:07

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
FormatEx() in der fmifs.dll ist das was du suchst...

bigg 2. Feb 2006 19:18

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Wozu formatiert man eigentlich einen Datenträger der bereits formatiert ist? :gruebel:

kalmi01 3. Feb 2006 07:58

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Zitat:

Zitat von bigg
Wozu formatiert man eigentlich einen Datenträger der bereits formatiert ist? :gruebel:

Wieso gehst Du davon aus, das eine RAMDISK bereits formatiert ist ?

bigg 3. Feb 2006 12:40

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
...,weil du sonst keine Dateien bzw. Verzeichnisse auf diesem Laufwerk ablegen könntest.

runger 3. Feb 2006 13:40

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Hallo,
ramdisk --> zerstören
ramdisk neu aufsetzen

fertig. Ist das gleiche wie beim formatieren.

Ich glaube dass du garkeine ramdisk formatieren willst, sondern eine normale Platte.
Ideal zum proggen eines Virus!

rainer

kalmi01 3. Feb 2006 14:02

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Zitat:

ramdisk --> zerstören
ramdisk neu aufsetzen
Nein, RAMDISK startet als Service, lässt sich mit NET STOP auch nicht stoppen.
Die RAMDISK ist nach dem Systemstart "jungfräulich" wie eine Festplatte und muss mit Angabe des gewünschten Filesystems formatiert werden.

Zitat:

Ich glaube dass du garkeine ramdisk formatieren willst, sondern eine normale Platte.
Warum denken einige hier immer das schlimmste ?

Zitat:

sondern eine normale Platte
Schon mal unter XP "format c:" versucht ?

kalmi01 3. Feb 2006 14:40

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Sodele,
hier ist das Gesuchte für Delphi
und es funzt super.

Danke thomasw, hast mich auf die richtige Spur gebracht.

phXql 3. Feb 2006 14:46

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Zitat:

Zitat von bigg
...,weil du sonst keine Dateien bzw. Verzeichnisse auf diesem Laufwerk ablegen könntest.

Deswegen will er sie doch formatieren..

kalmi01 3. Feb 2006 14:59

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Hi phXql,

bigg ist wohl von den RAMdisk's ausgegangen, die er kennt.

Es gibt welche, die sind sofort nach dem Systemstart verfügbar => kein Formatieren nötig
und welche, die sich wie eine Harddisk verhalten.

Bei den Harddisk-Typen gibt es wieder 2 verschiedene.
Die einen kommen gleich mit den vorher eingestellten Parametern hoch, die Anderen wollen explicit formatiert werden.

Alle drei Typen haben ihre Vor-/Nachteile.

Auf dem AMIGA gab's sogar eine rebootfeste RAMdisk (von der man booten konnte), sowie eine dynamische, die nur soviel Platz brauchte, wie man hineingepackt hat.

runger 3. Feb 2006 16:23

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Entschuldige

aber was für ein Quatsch:
Zitat:

Nein, RAMDISK startet als Service, lässt sich mit NET STOP auch nicht stoppen.
Was hat ein Service mit NET Stop zu tun?

Rainer

Ich hab das Ganze ausprobiert, du offenbar nicht.

kalmi01 3. Feb 2006 16:26

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Hi runger,

wie bist Du denn drauf ?

Schon mal die Idee gekommen, dass es mehr als nur einen Treiber für RAMDISK's gibt ?

phXql 3. Feb 2006 16:28

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Zitat:

Zitat von runger
Entschuldige

aber was für ein Quatsch:
Zitat:

Nein, RAMDISK startet als Service, lässt sich mit NET STOP auch nicht stoppen.
Was hat ein Service mit NET Stop zu tun?

Rainer

Ich hab das Ganze ausprobiert, du offenbar nicht.

Was ein Service mit NET STOP zu tun hat? Mit NET STOP kann man services stoppen...

runger 3. Feb 2006 16:34

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Ich kann nur lachen,

gib mal im Kommandofenster net help stop ein, dann wirst du sehen was du stoppen kannst.
nicht irgendwelche Dienste sondern ein Liste der Dienste die mit dem Netzwerk zu tun haben.
Es ist doch einfach grober Unfug damit einen ramdisk service stoppen zu wollen.
Dafür, dass man das merkt hat der Entwickler NET davor geschrieben!

Rainer

bigg 3. Feb 2006 16:42

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
oops, hab ich die Zank-Lawine etwa ausgelöst. :duck:
ps: ich halt mich lieber mal zurück :wall:

kalmi01 3. Feb 2006 16:42

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Zitat:

NET STOP beendet Windows-Dienste.

Wenn Sie einen Dienst beenden, wird dadurch auch jede Netzwerkverbindung
beendet, die der Dienst verwendet.
Außerdem können Dienste, die von anderen Diensten abhängig sind, mitbeendet werden.
Wer das gelesene auch versteht ist klar im Vorteil.

"net stop" beendet Dienste, sofern diese es zulassen.
Wenn solch ein Dienst eine Netzwerkresource verwendet, wird diese ebenfalls beendet.
Sollten andere Dienste von dem ge-stoppten abhängig sein, so werden diese ebenfalls beendet.

Iss doch garnicht so schwer.

phXql 3. Feb 2006 16:48

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Zitat:

Zitat von runger
Ich kann nur lachen,

gib mal im Kommandofenster net help stop ein, dann wirst du sehen was du stoppen kannst.
nicht irgendwelche Dienste sondern ein Liste der Dienste die mit dem Netzwerk zu tun haben.
Es ist doch einfach grober Unfug damit einen ramdisk service stoppen zu wollen.
Dafür, dass man das merkt hat der Entwickler NET davor geschrieben!

Rainer

deswegen kann ich auch Windows Audio mit net stop beenden... Verdammt, ich sollte meine Stereoanlage doch mit RJ45 an meine Netzwerkkarte hängen...

naja, ich halt mich hier raus, hat ja keinen sinn ;)

ringli 3. Feb 2006 17:04

Re: Laufwerk formatieren, still im Hintergrund ohne Fenster
 
Zitat:

Zitat von runger
Ich kann nur lachen,

gib mal im Kommandofenster net help stop ein, dann wirst du sehen was du stoppen kannst.
nicht irgendwelche Dienste sondern ein Liste der Dienste die mit dem Netzwerk zu tun haben.
Es ist doch einfach grober Unfug damit einen ramdisk service stoppen zu wollen.
Dafür, dass man das merkt hat der Entwickler NET davor geschrieben!

Rainer

@Rainer:

Gib bitte mal auf der Kommandozeile net stop themes ein. Du wirst feststellen das man damit den Dienst für die Designverwaltung (unter XP) stoppen kannst.

Ein net start themes startet den Dienst für die Designverwaltung wieder.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz