python - 在 python [Windows] 中列出驱动器和网络位置

标签 python windows

问题:

如何在 Windows 10 下使用 Python 获取所有驱动器和网络位置的列表?该列表应包含“本地驱动器”、“网络驱动器”和“网络位置”。

例子

TYP           HD      HD        NETWORK LOCATION
some_list = ["C:\\", "D:\\", "\\some.network.address\some_folder"]

我的解决方案:

有没有更好的方法来解决这个问题?我不认为我的快捷方式解析是一个“好的”解决方案...

import win32api
from os import getenv, listdir
from os.path import join
import win32com.client

NETWORK_SHORTCUTS_FOLDER_PATH = getenv('APPDATA') + \
                                "\\Microsoft\\Windows\\Network Shortcuts"

# Add Logical Drives
drives = win32api.GetLogicalDriveStrings()
drives = drives.split('\000')[:-1]

# Add Network Locations
network_shortcuts = [join(NETWORK_SHORTCUTS_FOLDER_PATH, f) +
                     "\\target.lnk" for f in listdir(NETWORK_SHORTCUTS_FOLDER_PATH)]
shell = win32com.client.Dispatch("WScript.Shell")
for network_shortcut in network_shortcuts:
    shortcut = shell.CreateShortCut(network_shortcut)
    drives.append(shortcut.Targetpath)

print(drives)

网络位置(不仅是网络驱动器!):

Windows 10

最佳答案

(第一部分是背景信息。滚动到下一条水平线以获得具体建议。)


您实际上在 Win10 中以与以前版本相同的方式映射网络驱动器:How to Map a Network Drive in Windows 10 .

您在屏幕截图上显示的不是映射驱动器,而是“网络快捷方式”。 XP 有一个类似的功能,叫做“网上邻居”,它收集了一个自动生成的上次访问的网络共享列表——与最近打开的文件的最近列表相同;该文件夹有一个 KNOWNFOLDERID FOLDERID_NetHood 并在用户配置文件中使用了 NetHood 文件夹。 This feature was removed in Vista because it proved rather useless .这个相同的 KNOWNFOLDERID 现在用于基本相同的“网络位置”功能,但列表是手工和/或 by domain administrators via Group Policy 组成的,默认占用Network Shortcuts文件夹。

Network Locations are apparently being recommended over mapped drives because they are more manageable .

请注意,映射的驱动器和网络位置都是针对每个用户的。


现在,为了使您的代码健壮,您所需要的只是不依赖于有关位置和格式的“内部知识”,而是尽可能使用提供的 API:

关于python - 在 python [Windows] 中列出驱动器和网络位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50528180/

相关文章:

python - Selenium 没有通过链接文本找到元素

windows - 如何从启动任务访问Azure本地存储?

c# - 如何了解 Win32 API?

c++ - Windows 应用程序启动我的控制台

android - 如何在 Cordova App Exit 上保存状态?

python - 编程错误 : relation "django_session" does not exist error after installing Psycopg2

python - 有没有一种方法可以在不使用 Python 中的 for 循环的情况下在元组中查找项目?

python - 在 Plotly 中为同一实体绘制 2 个不同的数据源

python - 从 dask dataframe 加载大量数据到 bigquery

windows - 通过脚本/命令行从 PE 文件中提取资源