System.Win32.SymbolicLink

Win32-2.10.0.0: A binding to Windows Win32 API.

Copyright | 2012 shelarcy
License | BSD-style
Maintainer | shelarcy@gmail.com
Stability | Provisional
Portability | Non-portable (Win32 API)
Safe Haskell | Safe-Inferred
Language | Haskell2010

System.Win32.SymbolicLink

Description

Handling symbolic link using Win32 API. [Vista of later and desktop app only]

Note: When using the createSymbolicLink* functions without the SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE flag, you should worry about UAC (User Account Control) when use this module's function in your application:

- require to use 'Run As Administrator' to run your application.
- or modify your application's manifect file to add <requestedExecutionLevel level=`requireAdministrator` uiAccess=`false`/>.

Starting from Windows 10 version 1703 (Creators Update), after enabling Developer Mode, users can create symbolic links without requiring the Administrator privilege in the current process. Supply a `True` flag in addition to the target and link name to enable this behavior.

Synopsis

- type SymbolicLinkFlags = DWORD
- c_CreateSymbolicLink :: LPTSTR -> LPTSTR -> SymbolicLinkFlags -> IO BOOL
- sYMBOLIC_LINK_FLAG_FILE :: SymbolicLinkFlags
- sYMBOLIC_LINK_FLAG_DIRECTORY :: SymbolicLinkFlags
- sYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE :: SymbolicLinkFlags
- createSymbolicLink :: FilePath -> FilePath -> SymbolicLinkFlags -> IO ()
- createSymbolicLinkFile :: FilePath -> FilePath -> Bool -> IO ()
- createSymbolicLinkDirectory :: FilePath -> FilePath -> Bool -> IO ()
- createSymbolicLink' :: FilePath -> FilePath -> SymbolicLinkFlags -> IO ()

# Documentation

type SymbolicLinkFlags = DWORD Source #

c_CreateSymbolicLink :: LPTSTR -> LPTSTR -> SymbolicLinkFlags -> IO BOOL Source #

sYMBOLIC_LINK_FLAG_FILE :: SymbolicLinkFlags Source #

sYMBOLIC_LINK_FLAG_DIRECTORY :: SymbolicLinkFlags Source #

sYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE :: SymbolicLinkFlags Source #

createSymbolicLink Source #

Arguments

:: FilePath | Target file path
-> FilePath | Symbolic link name
-> SymbolicLinkFlags |
-> IO () |

createSymbolicLink* functions don't check that file is exist or not.

NOTE: createSymbolicLink* functions are flipped arguments to provide compatibility for Unix, except `createSymbolicLink'`.

If you want to create symbolic link by Windows way, use `createSymbolicLink'` instead.

createSymbolicLinkFile Source #

Arguments

:: FilePath | Target file path
-> FilePath | Symbolic link name
-> Bool | Create the symbolic link with the unprivileged mode
-> IO () |

createSymbolicLinkDirectory Source #

Arguments

:: FilePath | Target file path
-> FilePath | Symbolic link name
-> Bool | Create the symbolic link with the unprivileged mode
-> IO () |

createSymbolicLink' Source #

Arguments

:: FilePath | Symbolic link name
-> FilePath | Target file path
-> SymbolicLinkFlags |
-> IO () |