; Version: 2023.05.22.2 ; https://gist.github.com/8809edd5a0f212ecec688141da590a24 /* now := A_Now file := A_Desktop "\file." now ".txt" link := A_Desktop "\link." now ".txt" FileOpen(file, 0x1).Write("Hello World!") created := CreateHardLink(link, file) if (created) RunWait % link else MsgBox 0x40010, Error, Error while creating the link. FileDelete % A_Desktop "\*." now ".txt" */ CreateHardLink(Link, Target) { if (FileExist(Link)) { ErrorLevel := -1 return false ; Link already exists } attributes := FileExist(Target) if (!attributes) { ErrorLevel := -2 return false ; Target doesn't exist } if (InStr(attributes, "D")) { ErrorLevel := -3 return false ; Not a file } loop Files, % Target, F Target := A_LoopFileLongPath if (SubStr(Link, 2, 1) = ":") { if (SubStr(Link, 1, 1) != SubStr(Target, 1, 1)) { ErrorLevel := -4 return false ; Not in the same drive } Link := "\\?\" Link } Target := "\\?\" Target success := DllCall("CreateHardLink", "Ptr", &Link, "Ptr", &Target, "Ptr", 0, "Int") ErrorLevel := !success return success }