来自python的Windows特殊和已知文件夹(开始菜单、下载等)

2024-10-03 21:25:18 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中确定Windows 和{a2}路径的最佳方法是什么?在

我为特殊文件夹发现了两个流行的方法,即a.k.aCSIDL,但对于KNOWNFOLDERID还没有什么简单明了的方法。保持了向后兼容性,因此CSIDL方法仍然有效,但是自windowsxp以来引入的任何特殊/已知文件夹都不会在那里枚举。“新”不可用的示例包括下载、播放列表、程序文件x64。

特殊文件夹

  • Find system folder locations in Python-最简单的CSIDL方法,依赖于win32com,适用于AllUsersDesktop、AllUsersStartMenu、AllUsersPrograms、AllUsersStartup、桌面、收藏夹、字体、MyDocuments、NetHood、printfood、Recent、SendTo、StartMenu、Startup&Templates(列表可能不完整)。

  • How to get path of Start Menu's Programs directory?-具有与上述相同的方法,以及直接使用ctypes的方法,因此不需要win32com(不那么清晰或直接)

已知文件夹

  • 是吗?在

两者合二为一

  • 是吗?在

Tags: 方法路径程序文件夹a2示例windows播放列表
1条回答
网友
1楼 · 发布于 2024-10-03 21:25:18
<>你用同样的方法解决这个问题:首先你找到了文档,并在C++、C语言或VB中找到了一些漂亮的示例代码,然后你就知道如何使用pyWi32来从Python中调用相同的shell API或^ {CD1>} com调用。在

正如Known Folders上的MSDN概述文档所述,您可以使用新的shell包装器函数^{},而不是旧的SHFolderPath或{},也可以通过COM使用完整的^{}接口。在

不幸的是,我面前没有一台Windows机器,MSDN的示例下载没有响应,所以我要做一些猜测。但可能是这样的:

from win32com.shell import shell, shellcon
path = shell.SHGetKnownFolderPath(shellcon.FOLDERID_AccountPictures,
                                  0, # see KNOWN_FOLDER_FLAG
                                  0) # current user

如果shellcon没有FOLDERID值,则必须在^{}上查找这些值,并自己定义所需的常量。在

如果shell没有SHGetKnownFolderPath函数,则必须实例化一个IKnownFolderManager并调用GetFolderByName。在

如果shell甚至没有IKnownFolderManager但是一个快速的Google显示it was added in build 218,那么这就不是问题了。在


如果您希望通过ctypes而不是win32com来完成,那么它将如下所示(同样,未经测试,因为我没有Windows设备,而且MSDN的服务器已损坏):

^{pr2}$

相关问题 更多 >