我正在尝试检测Window的默认媒体播放器路径,以便我可以从我的Python / wxPython程序中访问它。我的具体需求是制作所有媒体文件的列表并使用播放器播放。
答案 0 :(得分:2)
根据上面的评论,看起来你决定转向另一个方向。你的问题让我感到很好奇,所以无论如何我都做了一些狩猎。
文件关联存储在Windows注册表中。通过python访问Windows注册表信息的方法是使用_winreg模块(在2.0及更高版本中可用)。当前用户的单个文件关联信息将存储在命名如下的子键中:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.wmv\UserChoices
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mpeg\UserChoices
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.avi\UserChoices
等等您正在寻找的任何特定文件格式。
这是我编写的一个小示例脚本,用于访问此信息并将其存储为列表:
import _winreg as wr
# Just picked three formats - feel free to substitute or extend as needed
videoFormats = ('.wmv', '.avi', '.mpeg')
#Results written to this list
userOpenPref = []
for i in videoFormats:
subkey = ("Software\\Microsoft\\Windows\\CurrentVersion" +
"\\Explorer\\FileExts\\" + i + "\\UserChoice")
explorer = wr.OpenKey(wr.HKEY_CURRENT_USER, subkey)
try:
i = 0
while 1:
# _winreg.EnumValue() returns a tuple:
# (subkey_name, subkey_value, subkey_type)
# For this key, these tuples would look like this:
# ('ProgID', '<default-program>.AssocFile.<file-type>', 1).
# We are interested only in the value at index 1 here
userOpenPref.append(wr.EnumValue(explorer, i)[1])
i += 1
except WindowsError:
print
explorer.Close()
print userOpenPref
输出:
[u'WMP11.AssocFile.WMV', u'WMP11.AssocFile.avi', u'WMP11.AssocFile.MPEG']
使用WMP11 = Windows Media Player 11
希望这有用。
来源: