Windows – LogonUser – 来自系统服务的CreateProcessAsUser
|
我已经阅读了有关CreateProcessAsUser的Stack Overflow上的所有帖子,并且解决的问题很少,所以我不会屏住呼吸.但似乎我肯定错过了一些东西,所以它可能很容易. 目标操作系统是Windows XP.我有一个运行为“本地系统”的服务,我想从中创建一个以不同用户身份运行的进程.对于该用户,我有用户名和密码,因此LogonUser正常,我获得了用户的令牌(在这种情况下,是管理员帐户.)然后我尝试使用该令牌调用CreateProcessAsUser,但它失败,因为该令牌没有SeAssignPrimaryTokenPrivilege – 但是,它确实有SeIncreaseQuotaPrivilege. (我使用GetTokenInformation转储与该令牌关联的所有权限.)根据CreateProcessAsUser的MSDN页面,您需要两个权限才能成功调用CreateProcessAsUser. 它还说你不需要SeAssignPrimaryTokenPrivilege,如果传入CreateProcessAsUser()的令牌是“调用进程’主要令牌的受限版本”,我可以用CreateRestrictedToken()创建它,但是它会与之关联本地系统用户而不是我正在尝试运行该进程的目标用户. 那么我如何创建一个登录令牌,它既是调用进程的主要令牌的受限版本,又与另一个用户相关联?谢谢! 请注意,这里不需要用户交互 – 它都是无人值守的 – 所以不需要像抓取WINSTA0等那样做. SE_ASSIGNPRIMARYTOKEN_NAME是您可以在进程/线程中使用OpenProcessToken / OpenThreadToken LookupPrivilegeValue AdjustTokenPrivileges启用的权限(很容易将此与 TOKEN_ASSIGN_PRIMARY混淆,MSDN表示您需要将主令牌附加到进程)在这台XP:SP2机器上,只需调用LogonUser(…,LOGON32_LOGON_INTERACTIVE,…)CreateProcessAsUser就可以正常运行而不会弄乱任何权限(使用假的cmd.exe服务,但这不重要) MSDN上的这句话:
而且你作为SYSTEM运行并且应该能够启用任何权限的事实让我相信这个分配主要东西不是问题. (编辑:日照站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 窗口 – 如何使任务栏闪烁我的应用程序像Messenger当新消息
- windows – ruby win32apistructs(VerQueryValue)
- 在非Qt应用程序中使用基于Qt的DLL
- win10上部署Hadoop-2.7.3——非Cygwin、非虚拟机
- Watin Windows身份验证
- 如何将windows-1250 / Cp1250中编码的String转换为utf-8?
- win10连接远程桌面,出现身份验证错误,要求的函数不正确,
- ssms – 使用Windows身份验证时,如何在SQL Server Manageme
- windows-8 – 屏幕关闭时,WinRT应用程序可以继续运行吗?
- Windows服务 – 编写自动更新Windows服务的最佳做法
- 如何在Windows上制作相同高度的SWT按钮,文本和标
- Windows:忘记本地账户开机密码,但记得住PIN码
- windows vs2010 下使用glib库 mono4.3
- windows – 链接:.a,.lib和.def文件
- .net – System.Diagnostics.EventLog – 连接到
- windows-server-2008-r2 – Windows任务计划程序
- windows – Win32:窗口在整个生命周期内都有相同
- 2018-5-26 怎么在windows上远程连接linux服务器上
- window下使用SetUnhandledExceptionFilter捕获让
- 使用Ansible管理Windows
