jjzjj

CreateProcessAsUser

全部标签

c++ - 使用 CreateProcessAsUser 将焦点放在从系统服务启动的窗口上

我有一个系统服务,它使用CreateProcessAsUser方法启动应用程序。此服务使用模拟在事件session中启动应用程序。该应用程序正在按预期启动,我设法通过使用使窗口出现在前面:SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);但我不知道该怎么做才能让应用程序获得键盘焦点。即使应用程序在顶部,只要用户没有点击窗口,键盘输入就会转到我的应用程序下方的应用程序。 最佳答案 让您的应用程序通过RegisterHotKey注册一个(精心选择的)热键然后通过S

c++ - 使用 CreateProcessAsUser 函数从提升的进程创建非提升的进程

我正在运行一个具有SYSTEM权限的程序。我从LogonUser(szUserName,NULL,szPassword,LOGON32_LOGON_NETWORK,LOGON32_PROVIDER_DEFAULT,&hToken)中请求句柄的用户名和密码以进行本地登录。我想运行cmd.exe程序作为登录提供的用户凭据。登录成功,但当我尝试运行该过程时,没有任何反应。程序中止。我的代码是...//cmd.cpp:Definestheentrypointfortheconsoleapplication.//#include#include#include#include#include#i

c++ - CreateProcessAsUser() 不工作

我正在尝试使用我的服务启动GUI应用程序。我在VS2012上开发了该服务并在Windows7上运行。但是CreateProcessAsUser函数即使成功返回也不会启动应用程序。以下是我的代码:PHANDLEhToken=NULL;WTSQueryUserToken(WTSGetActiveConsoleSessionId(),hToken);if(!CreateProcessAsUser(hToken,NULL,//Nomodulename(usecommandline)pPath,//CommandlineNULL,//ProcesshandlenotinheritableNULL

windows - 如何将受限用户 token 转换为不受限用户 token ?

我有一个从受限UAC启动进程复制的用户token,我想从中删除拒绝组SID。我怎么做?如果我使用TOKEN_GROUPS信息类类型调用SetTokenInformation,我会收到无效参数错误。谢谢。 最佳答案 事实证明,有一种受支持的方法可以做到这一点。基本上你需要做一个双重间接来完成这项工作。首先,您想要使用WTSQueryUserToken获取用户token的session.接下来,您需要使用GetTokenInformation获取关联的管理用户token(寻找TokenLinkedToken信息)。现在您有了admint

python - 有没有使用 pywin32 createprocessasuser 并获取输出的好例子?

我需要使用pywin32方法以不同的用户身份创建进程,然后从生成的进程中获取标准输出、标准错误和错误代码,并在进程运行时将输入馈送到进程中。问题是,我似乎无法为createprocess函数找到一个很好的例子。这个问题变得更加复杂,因为我需要以不同的用户身份运行子进程,然后获取stderr、stdout、输入stdin并在完成时检索错误代码。 最佳答案 这里是CreateProcess函数族的ctypes定义。我编写它们是为了配合后续的create_process包装函数,该函数使用CREATIONINFO和STARTUPINFO实

c++ - 管理进程如何在登录用户中打开应用程序?

概览过程用C++编译运行的exe/dll场景登录(win7)标准用户帐户(无管理员)运行流程以管理员身份进程使用ShellExecute打开一些应用程序(exe)问题应用程序在管理员用户的范围内打开期待应用在标准用户范围内打开解决方案1。CreateProcessAsUser使用CreateProcessAsUser(假设我成功获得了hToken应该已经解决了这个问题)。但是,我收到调用失败的错误代码1314-ERROR_PRIVILEGE_NOT_HELD.回到文档告诉我:IfthisfunctionfailswithERROR_PRIVILEGE_NOT_HELD(1314),us

windows - 如何获取 Windows SYSTEM 用户 token

操作系统是启用了UAC的Windows7或更高版本。调用进程具有管理员权限,已由UAC框确认。我想在用户SYSTEM下生成一个新的控制台窗口(cmd.exe)(不要问为什么)。我可以使用Sysinternals的PsExec工具或类似工具以交互方式执行此操作,但我没有源代码,我需要了解其工作原理。我知道我必须调用CreateProcessAsUser()并且在第一个参数(hToken)设置为NULL的情况下工作正常,但现在我需要知道如何获取hToken。我知道我可以通过调用LogonUser()来获得这样的token-但不能用于SYSTEM。我如何获得SYSTEM的token?我想过使

c++ - CreateProcessAsUser 返回错误代码 2

我的应用程序中有两个进程。1."myService.exe"这是一个Windows服务。2.“myApp.exe”与“myService.exe”位于同一目录。此进程由“myService.exe”使用CreateProcessAsUserapi生成。我们必须使用此api而不是直接启动进程(使用系统调用),因为我们需要访问当前用户的vpn配置文件。当我对“myApp.exe”的路径进行硬编码时,它工作正常并创建了进程,但是通过获取“myService.exe”的当前目录获得的相同路径没有创建进程并返回错误代码2(文件未找到)。我使用的是VisualStudio2008。该项目是在ASC

windows - 在 Win7 登录屏幕上运行应用程序

这个问题在这里已经有了答案:Updated:Interactingwiththeuseronthewindowslogonscreen(3个答案)关闭6年前。我想通过服务在Windows7的登录屏幕上运行应用程序。我对此进行了长期研究并尝试了不同的方法,但不幸的是到目前为止还没有完全成功。我设法在当前登录用户的锁定屏幕上运行该应用程序-起初在我看来这就是我基本上试图实现的目标。然而,我随后意识到每个用户都有不同的登录屏幕和一个普通的登录屏幕(独立于用户)。我的猜测是这个独立于用户的登录屏幕(在多个帐户可用时或在锁定屏幕上单击“切换用户”时在启动后直接出现)在session0中运行,而用

windows - 更改线程 session ID

如何在不同的session中启动线程?我需要从非交互式session(session0)中的服务启动交互式session(session1)中的线程。我之前通过使用SetTokenInFormation和DuplicateTokenEx然后将其传递给CreateProcessAsUser来完成此过程。我希望我可以做同样的事情,除了使用SetThreadToken而不是CreateProcessAsUser。 最佳答案 线程不属于session,进程属于。您需要在另一个session中创建一个进程来托管您想要的线程。
12