readWindowsShellLink.Rd
Reads a Microsoft Windows Shortcut (.lnk file).
# S3 method for default
readWindowsShellLink(con, clean=TRUE, verbose=FALSE, ...)
A connection
or a character
string (filename).
If TRUE
, low-level file specific fields are dropped,
e.g. offsets on file locations.
If TRUE
, extra information is written while reading.
Not used.
Returns a list
structure.
This function is implemented based on the official file format
specification [1].
It is intended to replace readWindowsShortcut
(), which was
written based on reverse engineering (before [1] was made available).
[1] [MS-SHLLINK]: Shell Link (.LNK) Binary File Format, Microsoft Inc.,
September 25, 2009.
pathname <- system.file("data-ex/HISTORY.LNK", package="R.utils")
lnk <- readWindowsShellLink(pathname)
str(lnk)
#> List of 6
#> $ header :List of 13
#> ..$ linkCLSID : raw [1:16] 01 14 02 00 ...
#> ..$ linkFlags : Named logi [1:27] TRUE TRUE TRUE TRUE TRUE FALSE ...
#> .. ..- attr(*, "names")= chr [1:27] "HasLinkTargetIdList" "HasLinkInfo" "HasName" "HasRelativePath" ...
#> ..$ fileAttributes: Named logi [1:15] FALSE FALSE FALSE FALSE FALSE TRUE ...
#> .. ..- attr(*, "names")= chr [1:15] "readOnly" "hidden" "system" "reserved1" ...
#> ..$ creationTime : POSIXct[1:1], format: "2005-05-26 21:55:05"
#> ..$ accessTime : POSIXct[1:1], format: "2005-05-28 00:27:10"
#> ..$ writeTime : POSIXct[1:1], format: "2005-05-26 21:55:05"
#> ..$ fileSize : int 606
#> ..$ iconIndex : int 0
#> ..$ showCommand : int 1
#> ..$ hotKey : Named int [1:2] 0 0
#> .. ..- attr(*, "names")= chr [1:2] "lowByte" "highByte"
#> ..$ reserved1 : int 0
#> ..$ reserved2 : int 0
#> ..$ reserved3 : int 0
#> $ idList :List of 1
#> ..$ itemIdList:List of 9
#> .. ..$ : raw [1:18] 1f 50 e0 4f ...
#> .. ..$ : raw [1:23] 2f 43 3a 5c ...
#> .. ..$ : raw [1:90] 31 00 00 00 ...
#> .. ..$ : raw [1:44] 31 00 00 00 ...
#> .. ..$ : raw [1:70] 31 00 00 00 ...
#> .. ..$ : raw [1:62] 31 00 00 00 ...
#> .. ..$ : raw [1:62] 31 00 00 00 ...
#> .. ..$ : raw [1:50] 31 00 00 00 ...
#> .. ..$ : raw [1:58] 32 00 5e 02 ...
#> $ linkInfo :List of 3
#> ..$ volumeId :List of 4
#> .. ..$ driveType : int 3
#> .. ..$ driveSerialNumber: int -2077904061
#> .. ..$ data : raw [1:12] 49 42 4d 5f ...
#> .. ..$ volumeLabel : chr "IBM_PRELOAD"
#> ..$ localBasePath : chr "C:\\Documents and Settings\\hb\\braju.com.R\\R.utils\\R.utils\\inst\\HISTORY"
#> ..$ commonPathSuffix: chr ""
#> $ stringData :List of 3
#> ..$ name : chr "C:\\Documents and Settings\\hb\\braju.com.R\\R.utils\\R.utils\\inst\\HISTORY"
#> ..$ relativePath: chr "..\\HISTORY"
#> ..$ workingDir : chr "C:\\Documents and Settings\\hb\\braju.com.R\\R.utils\\R.utils\\inst"
#> $ relativePathname: chr "..\\HISTORY"
#> $ pathname : chr "C:\\Documents and Settings\\hb\\braju.com.R\\R.utils\\R.utils\\inst\\HISTORY"
str(lnk$pathname)
#> chr "C:\\Documents and Settings\\hb\\braju.com.R\\R.utils\\R.utils\\inst\\HISTORY"
lnk0 <- readWindowsShortcut(pathname)
str(lnk0$pathname)
#> chr "C:\\Documents and Settings\\hb\\braju.com.R\\R.utils\\R.utils\\inst\\HISTORY"