Python - 远程启动项目时获取当前用户文件夹

时间:2018-05-07 21:56:55

标签: python jenkins remote-access

我有一个程序,我从Jenkins服务器启动。

我使用pyinstaller创建了一个exe并将其安装在两台计算机上。然后詹金斯称他们俩。

起初我使用 os.path.expanduser('〜')来获取用户路径,但它返回了

"C:\Windows\System32\config\systemprofile"

我尝试使用 os.environ ['USERPROFILE']获取用户名后 仍然有:

"C:\Windows\System32\config\systemprofile"

最后,我发现了一个不同的解决方案,不需要os模块并尝试过:

import ctypes.wintypes
CSIDL_PERSONAL = 5       # My Documents
SHGFP_TYPE_CURRENT = 0   # Get current, not default value

buf= ctypes.create_unicode_buffer(ctypes.wintypes.MAX_PATH)
ctypes.windll.shell32.SHGetFolderPathW(None, CSIDL_PERSONAL, None, 
SHGFP_TYPE_CURRENT, buf)

print(buf.value)

在我的日志值中没有给出任何值。

如果我在本地运行exe,则所有值都会正常返回。 我运行的批处理命令是

start /wait C:\JenkinsResources\MarinaMain.exe

因此,当我远程调用它时,我将如何让这个程序找到它所在的计算机的用户文件夹。

1 个答案:

答案 0 :(得分:0)

为了让这个工作,我首先下载了Windows Power Shell插件。 重启后我使用了命令:

$PCAndUserName = Get-WMIObject -class Win32_ComputerSystem | select username

$UserName = [string]$PCAndUserName
$UserName = $UserName.split("\\")[-1]
$UserName = $UserName -replace ".{1}$"
$UserName

这给了我计算机上当前用户的名字,无论我是否使用Jenkins远程启动。