title: C++ ShellExecute specifically not opening LNK files
body: <p>-Windows 7 64-bit<br>
  -Visual Studio 2013 (v120)<br>
  -Unicode Enabled<br>
  -Target Build- Debug 32-bit</p>
  
  <p>I would like to build a launcher (for personal use) however I can't get ShellExecute to work with all file types or paths, specifically shortcuts (LNK). I've researched and tried the following in many combinations...<br>
  -I'm using escape sequences<br>
  -I'm adding the file extension (and tried without)<br>
  -I've included Windows.h<br>
  -Printed directory FindFirstFile / FindNextFile to explicitly ensure the path has no typos<br>
  -Tried using both a literal and variable as file path argument<br>
  -Tried running VS with admin privileges<br>
  -Tried ShellExecute, ShellExecuteA, ShellExecuteEx, and System (with appropriate character sets)<br>
  -Tried NULL, "runas" and, "open" for the verb<br>
  -Launches fine from Command Line or explorer using same path<br>
  -Tried using %USERPROFILE% macro instead of user name (returns 2)<br>
  -Seems to work with EXE and URLs<br>
  -Does not seem to work with any LNK across any path including C:\ directly  </p>
  
  <p>Suspected issue<br>
  -32bit/64bit discrepancy<br>
  -UAC / Privelages<br>
  -Character set<br>
  -File extension<br>
  -Anti virus interference (though AV isn't alerting me of any issues) and I've tested while silencing my AV  </p>
  
  <p>Here is one of the simplest programs I've tried...</p>
  
  <pre><code>#include "stdafx.h"
  #include &lt;iostream&gt;
  #include &lt;Windows.h&gt;
  #include &lt;atlstr.h&gt;
  
  int _tmain(int argc, _TCHAR* argv[])
  {
      CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
  
      // Variables below for testing as path argument
      // Paths that end with LNK are the only ones that I can't get to launch
      CStringW link("C:\\Users\\Home\\Documents\\Art\\blender.lnk"); // Doesn't work
      CStringW target("C:\\Program Files\\Blender Foundation\\Blender\\blender.exe"); // Launches software as expected
      CStringW url("https://stackoverflow.com"); // Launches browser with URL as expected
  
      int error = reinterpret_cast&lt;int&gt;(ShellExecute(
          NULL, 
          NULL, 
          L"C:\\Users\\Home\\Documents\\Art\\blender.lnk", // Using literal with LNK extension also does not work
          NULL, 
          NULL, 
          SW_SHOWDEFAULT
          ));
  
  
      // EVEN SYSTEM CAN NOT FIND THE PATH!!!
      // system("C:\\Users\\Home\\Documents\\Art\\blender.lnk");
  
      std::cout &lt;&lt; error &lt;&lt; std::endl; // Returns 3 "The specified path was not found.".
  
      // Free COM
      CoUninitialize();
  
      return 0;
  }
  </code></pre>