如何在Python中获取windows中已安装程序的路径

2024-06-01 04:20:14 发布

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

我正在用Python编写一个scritp,在windows终端中调用Ghostscript。在

我需要获取windows中安装程序的路径(例如GhostScript)

是否有任何环境变量或任何其他方法(系统注册表)来获取路径?在

解决方案(来自@abarner答案:)

    import winreg

    program_to_found = 'Software\\GPL Ghostscript'

    try:
        h_key = winreg.CreateKey(winreg.HKEY_LOCAL_MACHINE, program_to_found)
        try:
            gs_version = winreg.EnumKey(h_key, 0)
            h_subkey = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, program_to_found+'\\'+gs_version)
            gs_dll = (winreg.EnumValue(h_subkey,0))[1]
            print("Ghostscript %s is installed in: %s" % (gs_version, gs_dll.replace('gsdll32.dll', '')))
        except OSError:
            print("Ghostscript insn't correctly installed!! ")
    except PermissionError:
        print("Ghostsript not found!! ")

这适用于winXP和win7 32位系统。在


Tags: tokey路径gsversionwindows系统program
1条回答
网友
1楼 · 发布于 2024-06-01 04:20:14

你的要求一般来说是不可能的。Windows找不到任意安装的程序。但对于任何一款包括Ghostscript在内的特定应用程序来说,这都是可能的。在

由.msi机制安装的程序或与“添加/删除程序”中的“卸载”机制交互的其他程序,您可以找到相应的条目。但是有自己的自定义安装程序和卸载程序的程序不必这样做。在

可以通过这些关联找到添加“文件类型关联”的程序(例如,如果双击一个.ps文件窗口就知道如何打开它)。在

当然,许多程序都会安装自己的任意注册表项,您可以随时搜索这些注册表项。在

{看一下,你能解释一下。我认为简短的说法是:

  • 有一个选项可以将GS.EXE所在的目录添加到您的%PATH%中,但是在您的例子中,显然没有。在
  • 有一个选项可以将GS.EXE的路径注册为至少.ps个文件的文件类型关联,除非其他人已经拥有它。在
  • GSDLL32.DLL的路径可以在GS_DLL环境变量中找到,也可以在HKCU\Software\GPL Ghostscript\#.##或{}中找到(其中{}是主版本号和次版本号)。当然,不能保证DLL和EXE在同一个位置(这就是为什么它首先要做所有复杂的事情)。在
  • 卸载程序的路径是用Windows卸载程序机制注册的。当然,不能保证GS.EXE与卸载程序位于同一目录中。在

因为几乎所有这些都是可选的,所以归根结底,你要花多少精力去尝试所有不同的可能性。在

要从Python访问这些注册表项,请参阅stdlib中的^{}模块。在

相关问题 更多 >