在Python中使用WIN32 API CreateProcessAsUser

时间:2014-03-24 16:39:46

标签: python winapi process ctypes

我一直试图找到一个很好的例子,说明如何在LogonUser()API中使用Python中的CreateProcessAsUser()WIN32 API,但无济于事。

对此的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

首先,您应该知道Windows API的Python扩展已紧密映射到Windows API。在这个用例中,以下链接应该对您非常有用:

如果您将这些文档与pywin文档一起学习,您将学到很多东西。

正在撰写,请注意,要使用CreateProcessAsUser(),您必须拥有 SE_INCREASE_QUOTA_NAME 权限,可能还有 SE_ASSIGNPRIMARYTOKEN_NAME 。这些可以通过secpol.msc>在本地工作站上分配(假设您是管理员)。用户权利分配。

要了解这些权限如何映射到secpol.msc中显示的权限,请使用以下链接:

现在转到代码:

# First create a token. We're pretending this user actually exists on your local computer or Active Directory domain.
user = "ltorvalds"
pword = "IAMLINUXMAN"
domain = "." # means current domain
logontype = win32con.LOGON32_LOGON_INTERACTIVE
provider = win32con.LOGON32_PROVIDER_WINNT50
token = win32security.LogonUser(user, domain, pword , logontype, provider)

# Now let's create the STARTUPINFO structure. Read the link above for more info on what these can do.
startup = win32process.STARTUPINFO()

# Finally, create a cmd.exe process using the "ltorvalds" token.
appname = "c:\\windows\\system32\\cmd.exe"
priority = win32con.NORMAL_PRIORITY_CLASS
win32process.CreateProcessAsUser(token, appname, None, None, None, True, priority, None, None, startup)

希望这有帮助。