我有一些Python代码使用pythoncom来解析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
. 我得到的<用户名>是运行脚本的用户的用户名。一、 例如,如果我使用不同的帐户运行脚本,则用户名字段是不同的。E、 g.像约翰一样运行脚本
C: \Users\John\AppData\Local\Temp\filename
. 按鲍勃说的去做
C: \Users\Bob\AppData\Local\Temp\filename
. 虽然实际上只有一个目标文件名实例,但它位于一个用户的目录中,在运行该脚本时不会以任何方式使用该用户的帐户。
有什么问题吗?对于这样的远程文件,我应该用不同的方式使用COM吗?