Toon posts:

[Delphi] vrije ruimte op ander systeem bepalen.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een tool gemaakt om een heleboel server-beheer taken netjes in bij te kunnen houden.

Maar een aantal van die dingen die ik daar in handmatig invoer moeten ook automatisch kunnen. De gene waar ik mee begin en mij de makkelijkste lijkt is het met 1 klik op de knop alle servers langslopen en alle schijven op vrije ruimte checken.

Er is best veel te vinden over het bepalen van vrije ruimte van schijven, maar dan alleen op je lokale systeem en niet over remote systemen. (wel in het locale netwerk)

iemand enig idee waar ik moet beginnen?

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

GetDiskFreeSpace en GetDiskFreeSpaceEx werken ook over het netwerk (UNC pad of mapping). Er zit een bug in win95 die het onmogelijk maakt. De oplossing is dan om met WNetAddConnection een mapping aan te maken, dan de grote op te vragen en dan de mapping weer te verwijderen met WNetCancelConnection.

We adore chaos because we like to restore order - M.C. Escher


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
LordLarry schreef op 12 mei 2004 @ 15:22:
GetDiskFreeSpace en GetDiskFreeSpaceEx werken ook over het netwerk (UNC pad of mapping). Er zit een bug in win95 die het onmogelijk maakt. De oplossing is dan om met WNetAddConnection een mapping aan te maken, dan de grote op te vragen en dan de mapping weer te verwijderen met WNetCancelConnection.
Dus daarmee kan ik bijvoorbeeld de vrije ruimte mee bepalen van de volgende paden zonder daarvoor een mapping in mijn explorer te hebben?

\\server1\c$
\\server1\d$
\\server2\c$

(zolang je maar administrator bent over de systemen natuurlijk.)

[edit]
Ik heb het net geprobeerd als volgt:
(Het is trouwens een connectie naar een Windows 2000 Advanced Server)

procedure TForm1.Button3Click(Sender: TObject);
Var
RootPath : String;
Sec_Cluster, Bytes_Sec, Free_Clusters, Total_Clusters : DWord;
begin
RootPath := '\\server5\d$';
GetDiskFreeSpace(PChar(RootPath), Sec_Cluster, Bytes_Sec, Free_Clusters, Total_Clusters);
ListBox1.Items.Add('RootPath : ' + RootPath);
ListBox1.Items.Add('Sectors Per Cluster : ' + IntToStr(Sec_Cluster));
ListBox1.Items.Add('Bytes Per Sector : ' + IntToStr(Bytes_Sec));
ListBox1.Items.Add('Free Clusters : ' + IntToStr(Free_Clusters));
ListBox1.Items.Add('Total Clusters : ' + IntToStr(Total_Clusters));
ListBox1.Items.Add('Free Bytes : ' + IntToStr(Bytes_Sec * Sec_Cluster * Free_Clusters));
ListBox1.Items.Add('Total Bytes : ' + IntToStr(Bytes_Sec * Sec_Cluster * Total_Clusters));
end;


Het lijkt goed te werken, maar het resultaat klopt geen bal van.
er is 27,3Gb vrij op die disk, maar hij zegt dat er nog maar 1,2Gb vrij is.

Waar om klopt het resultaat niet?

Kan het ermee te maken hebben dat er vrij geavanceerd Array Controllers in de server zitten?

Bepaald het GetDiskFreeSpace de vrije ruimte van een partitie of van een fysieke disk?

[ Voor 73% gewijzigd door Verwijderd op 12-05-2004 15:56 ]


  • Just_a_Gamer
  • Registratie: November 2001
  • Laatst online: 25-05 23:13
Misschien dat het hierdoor komt:

een quotje van msdn
The GetDiskFreeSpace function cannot report volume sizes that are greater than 2 gigabytes (GB). To ensure that your application works with large capacity hard drives, use the GetDiskFreeSpaceEx function.