AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dll-Zuweisung

Ein Thema von JWollenberg · begonnen am 23. Nov 2020 · letzter Beitrag vom 26. Nov 2020
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

AW: Dll-Zuweisung

  Alt 24. Nov 2020, 13:15
Indirekt hat der schon bissl was damit zu tun.

Der Windows Script Host (WSH) kann aktuell standardmäßig VisualBasic- (VBS), JavaScript- (JS) und PowerShell-Scripte ausführen,
über die Console (wscript.exe bzw. cscript.exe) oder via API (DLL).
Und man kann dort auch nich weitere Script-Sprachen registrieren. (sogar PascalScript gibt es)

Wobei man PowerShell auch direkt auswühren kann (powershell.exe) und den WSH garnicht bräuchte.



Hier sind praktisch paar Dinge gemischt, welche nichtmal alle für das eigentlich Problem nötig sind.
* Laufwerke suchen ... Win32-API, PowerShell, WMI oder sonstwo
* ein PowerShellScript ausführen und dort nach Laufwerken suchen
* ein PowerShellScript im WindowsScriptingHost ausführen



1. Schon im Original-Link fehlt das Gleichheitszeichen in der if-Abfrage und der Vergleich darf nicht mit 0 sondern muss mit flag geschehen!
Aus if (flag and DriveMask) 0 then muss also if (flag and DriveMask) = flag then werden.
Wobei hier nicht das = fehlte, denn die sind alle vorhanden.
Es fehlte das <> , da irgendwann diese HTML-Zeichen verschwunden sind.
$2B or not $2B

Geändert von himitsu (24. Nov 2020 um 13:23 Uhr)
  Mit Zitat antworten Zitat
JWollenberg

Registriert seit: 8. Okt 2006
8 Beiträge
 
#12

AW: Dll-Zuweisung

  Alt 25. Nov 2020, 10:00
Hallo Leute,

1.
Zitat:
Zeig mir bitte mal die Fundstelle...
Habe ich vergessen Entschuldige, es ist nicht einfach sich in andere Denkmodelle hinein zu versetzen, wie ich weiter oben schon erläutert habe, brauche ich die Funktion um mit einer RAM-Disk zu arbeiten, das wiederum benötige ich für die Arbeit mit Dateien, dh. Schreib-Lese-Vorgänge, und da ich mindestens 2 RAM-Disks (manchmal auch mehr) zu laufen habe, möchte ich die Auswahl automatisieren.

2.
Zitat:
Wahrscheinlich wäre ein...
Leider wird mir hier keine RAM-Disk angezeigt.

3.
Zitat:
Die Problemstellung hat weder mit...
Genau, das wäre mein Wunsch, es wäre gut zu schreiben wie und nicht das es geht

Aber trotzdem Danke für eure Mühe!

Falls jemand noch eine greifende Idee habe sollte, wäre ich sehr dankbar.

Geändert von JWollenberg (25. Nov 2020 um 10:06 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Dll-Zuweisung

  Alt 25. Nov 2020, 10:23
2.
Zitat:
Wahrscheinlich wäre ein...
Leider wird mir hier keine RAM-Disk angezeigt.

Aber trotzdem Danke für eure Mühe!

Falls jemand noch eine greifende Idee habe sollte, wäre ich sehr dankbar.
Auch bei Get-CimInstance Win32_LogicalDisk | Select-Object DeviceID, DriveType nicht?

Bei mir kommt sowas bei rum:

Code:
DeviceID DriveType
-------- ---------
C:              3
D:              3
E:              5
M:              4
N:              4
R:              3
S:              4
Wobei bei mir R: die RAM-Disk ist. Diese ist mit "SoftPerfect RAM Disk" in Version 3.4.7 angelegt, 2048 MB groß und mit FAT32 formatiert.

Gemäß https://docs.microsoft.com/de-de/dot...m.io.drivetype ist 3 eine Festplatte und eine 6 wäre ein RAM-Datenträger.
Es ist aber soweit nicht verwunderlich, dass hier 3 anstatt 6 angezeigt wird, weil das Programm gegenüber Windows per Treiber eine richtige Festplatte emuliert.

Soll heißen: Je nachdem, wie und womit die RAM-Disk angelegt wurde, besteht keine Möglichkeit programmatisch herauszufinden, ob es nun eine richtige Festplatte/SSD zum Anfassen ist oder eine RAM-Disk.
Das ist immer abhängig davon, wie und was der jeweilige "Treiber" dafür an WinAPI-Funktionen und/oder Powershell zurückmeldet.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: Dll-Zuweisung

  Alt 25. Nov 2020, 10:35
Als Notbehelf wäre vielleicht möglich, anhand der Größe zu entscheiden, da eine RAM-Disk ja selten die Kapazität einer modernen Festplatte hat:

Code:
Clear
$ConversionFactor = 1024 * 1024 * 1024;
$MaxSizeInGigaBytes = 2 * $ConversionFactor  
$MinSizeInGigaBytes = 0.1 * $ConversionFactor                
Get-CimInstance Win32_LogicalDisk | Where-Object Size -lt $MaxSizeInGigaBytes | Where-Object Size -gt $MinSizeInGigaBytes
Kann man ggf. noch geschickter formulieren.
  Mit Zitat antworten Zitat
JWollenberg

Registriert seit: 8. Okt 2006
8 Beiträge
 
#15

AW: Dll-Zuweisung

  Alt 25. Nov 2020, 10:50
Also bei mir sieht es so aus:

Laufwerk001.gif - sind meine Laufwerke
Laufwerk002.gif - ausgeführtes PS-Script
Laufwerk003.gif - das Ergebnis

Wie man sieht wird keine RAM-Disk spezifiziert. Darum war meine Idee, dies mit einem Delhpi-Programm zu erledigen. Übrigens wird beim vorgezeigtem Quellcode auch keine RAM-Disk angezeigt.

Nun ist eure Kompetenz gefragt!

Danke im Voraus!
Miniaturansicht angehängter Grafiken
laufwerk001.jpg   laufwerk002.jpg   laufwerk003.jpg  
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: Dll-Zuweisung

  Alt 25. Nov 2020, 11:12
Nun ist eure Kompetenz gefragt!
Zitat von Ich:
Je nachdem, wie und womit die RAM-Disk angelegt wurde, besteht keine Möglichkeit programmatisch herauszufinden, ob es nun eine richtige Festplatte/SSD zum Anfassen ist oder eine RAM-Disk.
Das ist immer abhängig davon, wie und was der jeweilige "Treiber" dafür an WinAPI-Funktionen und/oder Powershell zurückmeldet.
Lösung: Wenn es kein Flag gibt, musst du über Umwege herausbekommen, ob das Laufwerk eine RAM-Disk ist. Die Größe wäre ein Indikator. Vgl. mit Beitrag #14.
  Mit Zitat antworten Zitat
JWollenberg

Registriert seit: 8. Okt 2006
8 Beiträge
 
#17

AW: Dll-Zuweisung

  Alt 25. Nov 2020, 18:01
Hallo Leute, erst einmal Danke für eure Mühe, dh. ich werde weiter nach einer Lösung suchen. Wenn jemand noch eine zündende Idee parat hat, so möge er sie mir aufzeigen.

MfG Jürgen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#18

AW: Dll-Zuweisung

  Alt 25. Nov 2020, 18:08
Bzw. wenn das Flag hier falsch ist, weil scheinbar jemand den Treiber schrottig programmiert hat.
* besserer RAMDrive-Triber
* oder eben irgendwie anders ermitteln
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
691 Beiträge
 
Delphi 10.3 Rio
 
#19

AW: Dll-Zuweisung

  Alt 25. Nov 2020, 18:38
Hallo,

wie legst du die RAM-Disk denn an? Da wird kein Name oder eine Id zurückgegeben? Kannst du nicht nach dem erstellen eine Datei auf Root der Disk anlegen die eine bestimmte UID als Name hat?
Dann kannst du einfach die liste der Laufwerke durchsuchen und nachsehen welches diese Datei hat.

Wozu brachst du die RAM-Disk(s) eigentlich? Vieleicht gibt es anderen Lösungen.

Nun ist eure Kompetenz gefragt!
Das finde ich doch schon ein bisschen frech!
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
JWollenberg

Registriert seit: 8. Okt 2006
8 Beiträge
 
#20

AW: Dll-Zuweisung

  Alt 25. Nov 2020, 18:42
Danke, ich werde sehen. Die RAM-Disk kommt von OSFMount. https://www.osforensics.com/tools/mo...sk-images.html
Dieses Programm lässt sich gut in Scripten verwenden.

Entschuldigung, ich wollte keinen zu Nahe treten.

Mit einer ID ist eine Option, danke.

Geändert von JWollenberg (25. Nov 2020 um 18:46 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:17 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