Etienne Perot Etienne Perot - 7 months ago 99
Python Question

Reading the target of a .lnk file in Python?

I'm trying to read the target file/directory of a shortcut (

.lnk
) file from Python. Is there a headache-free way to do it? The .lnk spec [PDF] is way over my head.
I don't mind using Windows-only APIs.

My ultimate goal is to find the
"(My) Videos"
folder on Windows XP and Vista. On XP, by default, it's at
%HOMEPATH%\My Documents\My Videos
, and on Vista it's
%HOMEPATH%\Videos
. However, the user can relocate this folder. In the case, the
%HOMEPATH%\Videos
folder ceases to exists and is replaced by
%HOMEPATH%\Videos.lnk
which points to the new
"My Videos"
folder. And I want its absolute location.

Answer

Create a shortcut using Python (via WSH)

import sys
import win32com.client 

shell = win32com.client.Dispatch("WScript.Shell")
shortcut = shell.CreateShortCut("t:\\test.lnk")
shortcut.Targetpath = "t:\\ftemp"
shortcut.save()


Read the Target of a Shortcut using Python (via WSH)

import sys
import win32com.client 

shell = win32com.client.Dispatch("WScript.Shell")
shortcut = shell.CreateShortCut("t:\\test.lnk")
print(shortcut.Targetpath)
Comments