有没有办法在Windows 7(Python)中进行交互式服务?

时间:2013-04-04 07:24:46

标签: python winapi service com outlook

我已经能够使用Python创建一个Windows服务并遵循本教程: http://ryrobes.com/python/running-python-scripts-as-a-windows-service/

但是我试图在其中实现一个脚本,通过COM打开一个新的Outlook邮件。这个脚本在服务之外工作,但我似乎已将问题追溯到这一行:

obj = win32com.client.Dispatch("Outlook.Application")

进一步研究,似乎在Vista和Windows 7中使用UAC阻止了与用户交互的服务。 更多信息 - http://msdn.microsoft.com/en-us/library/windows/desktop/ms683502%28v=vs.85%29.aspx

所以我的问题是:围绕这个最好的方法是什么? 我有一个python脚本,当我确保打开它时,但是在启动目录中保留批处理/ cmd文件似乎有点不对。

提前感谢任何想法!

Windows 7 x64(我也受企业组策略约束。我只有本地管理员权限)

1 个答案:

答案 0 :(得分:0)

您的更多信息' link描述了可能实现的两种技术:

  • "使用WTSSendMessage功能在用户会话中显示一个对话框"
  • "创建一个单独的隐藏GUI应用程序,并使用CreateProcessAsUser函数在交互式用户的上下文中运行应用程序。 ..."

但正如these answersSimon Mourier的评论所述,最直接的解决方案可能是服务+后台进程在用户会话+ IPC。

此外,如果您尝试通过Outlook创建新电子邮件,您可能希望/需要在用户的会话中运行某些内容以获得适当的上下文。