I want to create a symbolic link for a folder...
This will output "Result: 1" (in DebugView), regardless if I execute it (after compiling it) without admin permissions (which will fail, admin permissions are required). Why?
Code: Select all
; https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-createsymboliclinkw
Prototype.i Prototype_CreateSymbolicLink(lpSymlinkFileName.p-unicode, lpTargetFileName.p-unicode, dwFlags.i = 0)
; Returns #True if creating the symbolic link was successful or #False, if not
Procedure.i CreateSymbolicLink(lpSymlinkFileName.s, lpTargetFileName.s, dwFlags.i = 0)
Protected.i hDll, result = #True
Protected CreateSymbolicLink_Proto.Prototype_CreateSymbolicLink
; dwFlags
; 0x0 = The link target is a file
; 0x1 = The link target is a directory
hDll = OpenLibrary(#PB_Any, "Kernel32.dll")
If hDll
CreateSymbolicLink_Proto = GetFunction(hDll, "CreateSymbolicLinkW")
If Not CreateSymbolicLink_Proto(lpSymlinkFileName, lpTargetFileName, dwFlags)
result = #False
EndIf
CloseLibrary(hDll)
Else
result = #False
EndIf
ProcedureReturn result
EndProcedure
OutputDebugString_("Result: " + CreateSymbolicLink("C:\Users\username\AppData\Roaming\src_link", "D:\dst_target", 1))