通过远程计算机上的python解决Windows快捷方式时出现错误的用户

时间:2019-01-31 14:29:23

标签: python com shortcut

我有一些使用pythoncom的Python代码来解析Windows快捷方式文件(.lnk)。

def resolve_shortcut(filename):
    """ resolve target of Windows shortcut file via COM """
    sh = pythoncom.CoCreateInstance(shell.CLSID_ShellLink, None, 
        pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink)

    # Get an IPersist interface
    persist = sh.QueryInterface(pythoncom.IID_IPersistFile)

    persist.Load(filename)
    return sh.GetPath(shell.SLGP_RAWPATH)[0]

在本地计算机上可以正常工作。如果我通过UNC指定文件名的路径,则它部分地适用于远程服务器。 \ remotepc \ path \ to \ file。我有要解决的特定文件,但结果错误。结果的格式为 C:\ Users \ \ AppData \ Local \ Temp \ filename 。我以的身份得到的是运行脚本的用户的用户名。也就是说,如果我使用其他帐户运行脚本,则用户名字段会有所不同。例如,以John身份运行脚本,我会看到 C:\ Users \ John \ AppData \ Local \ Temp \ filename 。以Bob身份运行它,我会得到 C:\ Users \ Bob \ AppData \ Local \ Temp \ filename 。实际上,该目标文件名只有一个实例,但它位于一个用户的目录中,该用户的帐户在运行该脚本时不会被使用。

任何想法在这里有什么问题吗?对于这样的远程文件,我应该以其他方式使用COM吗?

0 个答案:

没有答案