如何创建作为服务或正常进程的可执行文件?

时间:2015-11-23 11:44:09

标签: python windows-services

我根据此代码Is it possible to run a Python script as a service in Windows? If possible, how?创建了一项服务 但是当我运行代码时,我只能将其作为服务而不是正常的流程运行 是否有可能创建一个脚本,当它由管理员运行时作为服务运行,但是当它没有管理员权限激活时,它作为正常流程运行?

1 个答案:

答案 0 :(得分:1)

使用win32service(某些文档here),您还可以通过调用GetUserObjectInformation方法获取用户信息,并使用不同的type参数获取{{1}之一}}。可以找到完整的用户信息类型列表here

要查看您在程序中的某个位置打印信息,例如下面的代码段。如果您只需要用户名UOI_FLAGS,UOI_NAME, UOI_TYPE, or UOI_USER_SID就可以轻松实现目标。

win32api

最后,为了直接获得权限,您可以使用print win32api.GetUserName() print win32service.GetUserObjectInformation( win32service.OpenInputDesktop(0,0,1), 4) # or simply: print win32service.GetUserObjectInformation( win32service.GetProcessWindowStation(), 4) ,如下所示:

win32net

这将返回一个映射到:

的int
  • win32netcon.USER_PRIV_GUEST(0)
  • win32netcon.USER_PRIV_USER(1)
  • win32netcon.USER_PRIV_ADMIN(2)

在您的计划中,您可以检查 win32net.NetUserGetInfo(None, win32api.GetUserName() , 11 )['priv'] 是否将其作为服务启动。

有关扩展程序的详细信息,请参阅简要参考here