pythondirectoryshortcuttargetlnk

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 spec 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.


Solution

  • 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)