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 MachineName von einem gemapten Laufwerk abfragen (https://www.delphipraxis.net/107666-machinename-von-einem-gemapten-laufwerk-abfragen.html)

Kostas 31. Jan 2008 13:09


MachineName von einem gemapten Laufwerk abfragen
 
Hallo Zusammen,

hat jemand eine Idee wie der MachineName eines gemapten Laufwerks abzufragen ist?

Als Beispiel gebe ich am PC1 C: frei mit dem Namen "PC1_C".
Gahe danach zum zweiten PC2, suchte über das Netzwerk den PC1
und die Freigabe PC1_C und erzeuge ein neues Netzlaufwerk Y welches
auf PC1_C zeigt. Der Explorer zeigt mir jetzt an PC1_C auf "PC1" Y:

Die Frage ist jetzt, wie finde ich mit Delphi heraus das Y: überhaupt ein
Netzlaufwerk ist und den MachineName (PC1) der die Freige PC1_C hostet.


Gruß Kostas

soulies 31. Jan 2008 13:20

Re: MachineName von einem gemapten Laufwerk abfragen
 
hoi,

sowas ähnliches hatte wir heute schon ...

mein vorschlag würde auch hier über WMI gehen

mit :
SQL-Code:
select caption,providername from Win32_LogicalDisk where drivetype=4
erhälst du als ergebnis alle laufwerke die gemapped sind inkl. LW-Buchstaben und netzwerkpfad

Bsp: Caption: Y - ProviderName: \\PC1\PC1_C
...
...

für den rechner namen einfach den providernamen auseinandernehmen ...


cya

Bernhard Geyer 31. Jan 2008 13:20

Re: MachineName von einem gemapten Laufwerk abfragen
 
Hilft dir diese Diskussion

marabu 31. Jan 2008 16:52

Re: MachineName von einem gemapten Laufwerk abfragen
 
Hallo Kostas,

den Typ des Laufwerks kannst du mit GetDriveType('Y:\') herausfinden.

EDIT: Den Servernamen kannst du wahrscheinlich auch über irgendwelche Network API Funktionen ermitteln, aber es geht auch mit ein paar String-Operationen:

Delphi-Quellcode:
function ExtractServerName(const unc: string): string;
begin
  if AnsiStartsText('\\', unc)
    then Result := ExtractFileName(ExtractFileDir((ExtractFileDrive(unc))))
    else Result := '';
end;

// serverName := ExtractServerName(ExpandUNCFileName('Y:\'));
Freundliche Grüße

Kostas 31. Jan 2008 19:26

Re: MachineName von einem gemapten Laufwerk abfragen
 
Hallo Zusammen,

hey meine Frage war ja noch warm und schon habe ich die Antwort. :-)
ExpandUNCFileName habe ich gesucht.
So funkt es einwandfrei.

Delphi-Quellcode:
{-----------------------------------------------------}
{}function GetRemoteMachineName(UNCPath:String):string;
{-----------------------------------------------------}
var i:integer;
begin
  result := '';
  UNCPath := ExpandUNCFileName(UNCPath);

  for i:=3 to length(UNCPath) do
  begin
    if copy(UNCPath,i,1)='\' then
    begin
      result := copy(UNCPath,3,i-3);
      break;
    end;{if}
  end;
end;{GetRemoteMachineName}
Ein Herzliches Dankeschön an alle.

Gruß Kostas


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