Index: trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 13690)
+++ trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 13691)
@@ -134,5 +134,5 @@
             for (final File file : files) {
                 if (file.exists()) {
-                    this.files.add(file);
+                    this.files.add(Main.platform.resolveFileLink(file));
                 } else if (file.getParentFile() != null) {
                     // try to guess an extension using the specified fileFilter
Index: trunk/src/org/openstreetmap/josm/tools/PlatformHook.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/PlatformHook.java	(revision 13690)
+++ trunk/src/org/openstreetmap/josm/tools/PlatformHook.java	(revision 13691)
@@ -358,3 +358,14 @@
         // To be implemented if needed
     }
+
+    /**
+     * Resolves a file link to its destination file.
+     * @param file file (link or regular file)
+     * @return destination file in case of a file link, file if regular
+     * @since 13691
+     */
+    default File resolveFileLink(File file) {
+        // Override if needed
+        return file;
+    }
 }
Index: trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(revision 13690)
+++ trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(revision 13691)
@@ -34,4 +34,5 @@
 import java.io.BufferedWriter;
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
@@ -80,4 +81,6 @@
 import org.openstreetmap.josm.io.CertificateAmendment.NativeCertAmend;
 import org.openstreetmap.josm.spi.preferences.Config;
+
+import sun.awt.shell.Win32ShellFolderManager2;
 
 /**
@@ -767,3 +770,15 @@
         return null;
     }
+
+    @Override
+    public File resolveFileLink(File file) {
+        if (file.getName().endsWith(".lnk")) {
+            try {
+                return new Win32ShellFolderManager2().createShellFolder(file).getLinkLocation();
+            } catch (FileNotFoundException e) {
+                Logging.error(e);
+            }
+        }
+        return file;
+    }
 }
