diff --git a/Lib/tkinter/_fix.py b/Lib/tkinter/_fix.py
index 8820cba..c11d663 100644
--- a/Lib/tkinter/_fix.py
+++ b/Lib/tkinter/_fix.py
@@ -10,6 +10,40 @@
 # <TCL_LIBRARY>\..\tcl<TCL_VERSION>, so anything close to
 # the real Tcl library will do.
 
+# Expand symbolic links on Vista
+try:
+    import ctypes
+    ctypes.windll.kernel32.GetFinalPathNameByHandleW
+except (ImportError, AttributeError):
+    def convert_path(s):
+        return s
+else:
+    def convert_path(s):
+        if isinstance(s, bytes):
+            s = s.decode("mbcs")
+        hdir = ctypes.windll.kernel32.\
+            CreateFileW(s, 0x80,    # FILE_READ_ATTRIBUTES
+                        1,          # FILE_SHARE_READ
+                        None, 3,    # OPEN_EXISTING
+                        0x02000000, # FILE_FLAG_BACKUP_SEMANTICS
+                        None)
+        if hdir == -1:
+            # Cannot open directory, give up
+            return s
+        buf = ctypes.create_unicode_buffer("", 32768)
+        res = ctypes.windll.kernel32.\
+            GetFinalPathNameByHandleW(hdir, buf, len(buf),
+                                      0) # VOLUME_NAME_DOS
+        ctypes.windll.kernel32.CloseHandle(hdir)
+        if res == 0:
+            # Conversion failed (e.g. network location)
+            return s
+        s = buf[:res]
+        # Ignore leading \\?\
+        if s.startswith("\\\\?\\"):
+            s = s[4:]
+        return s
+
 prefix = os.path.join(sys.prefix,"tcl")
 if not os.path.exists(prefix):
     # devdir/../tcltk/lib
@@ -17,6 +51,7 @@
     prefix = os.path.abspath(prefix)
 # if this does not exist, no further search is needed
 if os.path.exists(prefix):
+    prefix = convert_path(prefix)
     if "TCL_LIBRARY" not in os.environ:
         for name in os.listdir(prefix):
             if name.startswith("tcl"):
diff --git a/Misc/NEWS b/Misc/NEWS
index 9d27971..53cd724 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -139,6 +139,9 @@
 Library
 -------
 
+- Issue #3881: Help Tcl to load even when started through the
+  unreadable local symlink to "Program Files" on Vista.
+
 - Issue #4710: Extract directories properly in the zipfile module;
   allow adding directories to a zipfile.
 
