我有一个系统服务,它使用CreateProcessAsUser方法启动应用程序。此服务使用模拟在事件session中启动应用程序。该应用程序正在按预期启动,我设法通过使用使窗口出现在前面:SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);但我不知道该怎么做才能让应用程序获得键盘焦点。即使应用程序在顶部,只要用户没有点击窗口,键盘输入就会转到我的应用程序下方的应用程序。 最佳答案 让您的应用程序通过RegisterHotKey注册一个(精心选择的)热键然后通过S
我正在开发一个C++应用程序,这个应用程序作为Windows服务运行。我需要模拟当前用户来访问网络位置,为此我使用WindowsAPILogonUser和ImpersonateLoggedOnUser。问题是我只有用户名和域信息,但没有密码。那么是否可以在不提供密码的情况下调用LogonUser来获取用户句柄? 最佳答案 不,那将是一个相当明显的安全漏洞。但是,您可以在当前用户的UI进程和您的服务之间使用命名管道。然后您的服务可以模拟命名管道的另一端。这是安全的,因为您控制管道的两端。
我有一个奇怪的情况,我稍微修改了seleniumweb驱动程序代码以允许驱动程序服务在不同的用户下启动,对github中的代码的更改是:publicvoidStart(){this.driverServiceProcess=newProcess();if(this.user!=null){this.driverServiceProcess.StartInfo.UserName=user.Name;this.driverServiceProcess.StartInfo.Password=user.Password;this.driverServiceProcess.StartInfo.D
在Windows中,程序可以通过调用LogonUser来获取用户访问token,OpenProcessToken、SSPI函数和其他一些函数。获得token后,您可以将此token传递给许多函数,以便以该用户的身份执行操作。这类操作通常会对“父”进程产生副作用吗?例如,您可以通过LoadUserProfile加载用户的配置文件(注册表设置等).除此之外,LoadUserProfile会将用户的注册表配置单元加载到HKEY_USERS并将HKEY_CURRENT_USER映射到它。从父进程的角度来看,这会改变HKEY_CURRENT_USER吗?或者它只是在作为该用户通过CreatePr
下面是我正在使用的代码:即使我正在模拟Administrators组中的帐户,我的访问也被拒绝。SafeTokenHandlesafeTokenHandle;stringuserName,domainName;//Gettheusertokenforthespecifieduser,domain,andpasswordusingthe//unmanagedLogonUsermethod.//Thelocalmachinenamecanbeusedforthedomainnametoimpersonateauseronthismachine.constintLOGON32_PROVIDE
我正在编写32位服务应用程序,我希望能够在其中为登录用户启动“开始”菜单项。我确实设法通过模拟用户并使用CreateProcessAsUser和命令行启动选定的.lnk文件来完成此任务:%windir%\system32\cmd/c"start/b/i""""".它适用于几乎所有快捷方式,除了Accessories文件夹中的一堆系统快捷方式(例如StickyNotes.lnk、SnippingTool.lnk)。在启动截图工具期间,我从cmd收到带有此错误的消息框:Windowscannotfind'C:\ProgramData\Microsoft\Windows\StartMenu\
我这里有个情况。使用Python,我创建了一个进程(以SYSTEM或管理员用户身份运行),我需要使用不带密码的不同用户名调用应用程序。所以阅读下面的这个链接,结论是可能的,冒充另一个没有密码的用户,使用Kerberos......但我没有找到任何用Python编写的解决方案,实际上我不知道是否有更好的方法来解决这个问题.https://blogs.msdn.microsoft.com/winsdk/2015/08/28/logon-as-a-user-without-a-password/Python3.4.1x64,Windows7。谁能帮我解决这个问题?非常感谢!附言:Thisco
模拟用户的典型方法是调用LogOnUser()以获取用户的访问token并将此token传递给ImpersonateLoggedOnUser()以进行模拟。但是,这只会模拟调用线程的用户。有没有办法模拟或更改进程的访问token(主token)?支持我正在访问网络共享,并且生成了多个线程来访问该网络共享的不同部分。我是否必须在所有这些线程中模拟远程用户(有权访问该共享)?还是有一种方法可以先“模拟”进程,以便在生成新线程时,它们已经通过自动继承进程主token获得了访问权限? 最佳答案 不,这是不可能的。NtSetInformati
如何为创建调用我的应用程序的进程的用户获取访问token?我需要使用该token进行模拟,目的是访问该用户应用程序数据中的文件。附言将模拟用户的应用程序是在系统下运行的服务。 最佳答案 查看MSDN,所有这些API都有详细的文档记录。你可能想做这样的事情:HANDLEthisToken,thisProcess;thisProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,GetCurrentProcessId());OpenProcessToken(thisProcess,TOKEN_ALL_AC
我已经创建了一个模板类,它将创建一个带有登录用户token的线程并运行任何方法。我在std::function的帮助下将它传递给模板类,并在用户级上下文中运行它。我目前的使用情况:1.该类用于windows服务进程(以SYSTEM级别运行)。2.线程在挂起状态下创建,SetThreadToken()用于应用从“explorer.exe”创建的模拟token。(我知道在多个登录用户的情况下这不是一种可行的方法,但暂时我需要这个东西来解决问题)。3.在这些之后,我将恢复线程以在用户级上下文中执行传递的util方法。引用的线程模拟来自:Createthreadwithspecificpriv