неправильный пользователь при разрешении ярлыка windows через python на удаленной машине - PullRequest
0 голосов
/ 31 января 2019

У меня есть некоторый код 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 .То, что я получаю как - это имя пользователя, который запускает скрипт.Т.е., если я запускаю скрипт с использованием разных учетных записей, поле имени пользователя будет другим.Например, при запуске сценария от имени Джона я вижу C: \ Users \ John \ AppData \ Local \ Temp \ filename .Запустив его как Боб, я получу C: \ Users \ Bob \ AppData \ Local \ Temp \ filename .Хотя в действительности существует только один экземпляр этого целевого имени файла, он находится в каталоге одного пользователя, чья учетная запись никоим образом не используется при запуске этого сценария.

Есть идеи, что здесь не так?Должен ли я использовать COM другим способом для таких удаленных файлов?

...