--- dirspec\utils.py.orig 2012-08-29 13:27:58.446354800 +0100 +++ dirspec\utils.py 2012-08-29 13:28:12.524075600 +0100 @@ -135,7 +135,15 @@ special_folders = {} if sys.platform == 'win32': - from win32com.shell import shell, shellcon + import ctypes, ctypes.wintypes + csidl = dict(CSIDL_PROFILE=40, CSIDL_LOCAL_APPDATA=28, + CSIDL_COMMON_APPDATA=35) + def get_path(name): + SHGFP_TYPE_CURRENT = 0 + buf = ctypes.create_unicode_buffer(ctypes.wintypes.MAX_PATH) + ctypes.windll.shell32.SHGetFolderPathW(0, csidl[name], 0, SHGFP_TYPE_CURRENT, buf) + return buf.value.encode('utf8') + ##from win32com.shell import shell, shellcon # CSIDL_LOCAL_APPDATA = C:\Users\\AppData\Local # CSIDL_PROFILE = C:\Users\ # CSIDL_COMMON_APPDATA = C:\ProgramData @@ -145,8 +153,8 @@ # per http://msdn.microsoft.com/en-us/library/windows/desktop/bb762181, # SHGetFolderPath is deprecated, replaced by SHGetKnownFolderPath # (http://msdn.microsoft.com/en-us/library/windows/desktop/bb762188) - get_path = lambda name: shell.SHGetFolderPath( - 0, getattr(shellcon, name), None, 0).encode('utf8') + ##get_path = lambda name: shell.SHGetFolderPath( + ## 0, getattr(shellcon, name), None, 0).encode('utf8') special_folders['Personal'] = get_path("CSIDL_PROFILE") special_folders['Local AppData'] = get_path("CSIDL_LOCAL_APPDATA") special_folders['AppData'] = os.path.dirname(