首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以服务的形式运行时可用的派散图标

以服务的形式运行时可用的派散图标
EN

Stack Overflow用户
提问于 2019-12-30 09:48:18
回答 1查看 1K关注 0票数 1

使用:

  • Python (3.7.5)
  • Pyinstaller (3.5)
  • Pywin32 (223)
  • 漂流(电流)

我有一个python程序,它使用Pystray来显示一个图标,这允许我使Tkinter窗口可用。这需要一段时间,但是,由于堆栈溢出,这个功能可以正常工作。然后,我使用PyInstaller为此创建一个可执行文件,这也运行良好。到目前为止,一切都很好,执行程序启动它的webservice并显示图标。

我从用pywin32创建的服务中调用这个程序。程序按预期启动,它的webservice功能是可用的,但是我看不到系统托盘图标。我认为这是因为我是作为管理员登录的,但是服务运行在一般服务帐户下。

是否有任何方法使所有登录到机器的用户都可以使用Pystray?

EN

Stack Overflow用户

发布于 2020-04-13 18:34:41

这个链接解释了一切:https://learn.microsoft.com/en-us/archive/blogs/winsdk/launching-an-interactive-process-from-windows-service-in-windows-vista-and-later

摘要:您不能像通常那样从windows服务打开交互进程,因为服务运行在完全不同的环境(也称为会话0)上,而登录用户的会话id是1.2.取决于用户的数量。

如果您启动服务并查看任务管理器中的“详细信息”选项卡,您将发现您的进程正在运行,但没有出现

据我所知,这里我们(经过一段时间后也遇到了完全相同的问题)试图从会话0中的服务中打开一个进程,而它不能直接与会话1交互?因此,我们应该使用CreateProcessAsUser作为用户创建新流程。

我使用了以下代码来运行它:

代码语言:javascript
复制
# A SETUP FOR STARTUPINFO
startupInfo = win32process.STARTUPINFO()
startupInfo.dwFlags = win32process.STARTF_USESHOWWINDOW
startupInfo.wShowWindow = win32con.SW_NORMAL

# GET THE TOKEN FOR LOGGED-IN USER
console_session_id = win32ts.WTSGetActiveConsoleSessionId()
console_user_token = win32ts.WTSQueryUserToken(console_session_id)
# GET THE LOGGED IN USER'S ENVIRONMENT TOO
environment = win32profile.CreateEnvironmentBlock(console_user_token, False)

win32process.CreateProcessAsUser(console_user_token,
                                 'notepad.exe', # PATH TO YOUR EXECUTABLE / SCRIPT
                                 None, # THIS ONE IS 'COMMAND LINE' IF YOU INTEND YOU USE IT
                                 None,
                                 None,
                                 0,
                                 win32con.NORMAL_PRIORITY_CLASS,
                                 environment, # TO OPEN IN USER'S ENVIRONMENT
                                 None,
                                 startupInfo)

如果您有任何疑问,请告诉我

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59528750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档