Wie kann ich unterscheiden programmatisch harte Links von echten Dateien in Windows 7?

StackOverflow https://stackoverflow.com/questions/3636820

  •  30-09-2019
  •  | 
  •  

Frage

ich einen Unterschied zwischen Dateien Größe und belegten Speicherplatz (Gesamtgröße der Datei ist noch mehr als Festplattengröße). Ich nehme an, weil es viele harte Links sind vorhanden (zu WinSxS Komponenten) in Windows 7 / Vista. Aber wie kann ich programmatisch harte Links von echten Dateien in Windows unterscheiden 7?

War es hilfreich?

Lösung

Sie können nicht, da alle Dateien Hardlinks sind. Nicht wirklich. Eine Datei ist nur eine feste Verbindung zu einem Datenblock - ein Eintrag in einem Verzeichnis. (Vielleicht haben Sie Mittelwert symlinks? Sie können unterscheiden diejenigen, ...)

Mit den eingebauten Methoden Windows bietet für stattdessen belegten Speicherplatz zu berechnen.

EDIT: Referenz (Schwerpunkt Mine)

  

Die Verbindung selbst ist nur ein Verzeichniseintrag , und nicht über eine Sicherheitsbeschreibung. Wenn Sie also die Sicherheitsbeschreibung eines harten Link zu ändern, Sie eine Änderung der Sicherheitsbeschreibung der zugrunde liegenden Datei und alle harten Links dieser Punkt in der Datei ermöglichen es dem neu festgelegten Zugriff.

Andere Tipps

Sie kann nicht unterscheiden harte Links von "real-Dateien". Der Verzeichniseintrag für eine „echte Datei“ ist nur ein weiterer harter Link. Vielleicht bedeuten eine symbolische Verbindung.

POSIX hat eine stat Funktion (genannt _stat in Windows), die mehrere Links auf die gleiche Datei erkennen kann, die die gleiche „inode“ Nummer haben.

Verwenden Sie GetFileInformationByHandle () und überprüfen Sie die zurück BY_HANDLE_FILE_INFORMATION nNumberOfLinks Mitglied für einen Wert> 1.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top