Funktionreferenz


_WinAPI_CreateHardLink

Beschreibung anzeigen in

Stellt einen Hardlink zwischen einer existierenden und einer neuen Datei her.

#include <WinAPIFiles.au3>
_WinAPI_CreateHardLink ( $sNewFile, $sExistingFile )

Parameter

$sNewFile Der Name der neuen Datei.
$sExistingFile Der Name der existierenden Datei.

Rückgabewert

Erfolg: True.
Fehler: False. Es ist _WinAPI_GetLastError() aufzurufen um erweiterte Fehlerinformationen zu erhalten.

Bemerkungen

_WinAPI_CreateHardLink() wird nur auf einem NTFS-Dateisystem unterstützt zudem nur für Dateien und nicht für Verzeichnisse.

Der Standardsicherheitsdeskriptor gehört zu der Datei auf welche der Hardlink zeigt. Der Link selbst ist nur ein Verzeichniseintrag und hat keinen Sicherheitsdeskriptor.
Deshalb wird, wenn man immer den Sicherheitsdeskriptor eines Hardlinks ändert, immer der Sicherheitsdeskriptor der drunterliegenden Datei geändert und alle Hardlinks zu der Datei erlauben den neuangegebenen Zugang.
Deshalb kann man keinen unterschiedlichen Sicherheitsdeskriptor auf einer pro-Hardlink-Bais angeben.

Mit _WinAPI_DeleteFile() kann man Hardlinks löschen. Die Reihenfolge in welcher man sie löscht spielt keine Rolle.

Verwandte Funktionen

_WinAPI_DeleteFile

Siehe auch

Suche nach CreateHardLink in der MSDN Bibliothek.

Beispiel

#include <Array.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>
#include <WinAPIShPath.au3>

Local $sFile = @DesktopDir & '\' & StringRegExpReplace(_WinAPI_PathFindFileName(@ScriptName), '\A_+', '@')

; Create hard link to the current file with prefix "@" on your Desktop
If Not _WinAPI_CreateHardLink($sFile, @ScriptFullPath) Then
    MsgBox(($MB_ICONERROR + $MB_SYSTEMMODAL), 'Error', 'Unable to create hard link.')
    Exit
EndIf

; Enumerate all hard links to the file
Local $aData = _WinAPI_EnumHardLinks($sFile)

_ArrayDisplay($aData, '_WinAPI_EnumHardLinks')

FileDelete($sFile)