问题描述
有一个 MSI 自定义操作可以启动外部进程。但是,在 Windows 7(也可能是 Vista)上,在 LocalSystem 帐户下运行的自定义操作没有 SE_BACKUP_NAME
权限。我正在启动的外部进程在某个阶段需要此特权。但是,它没有获得特权,因为父级(运行 MSI 自定义操作)没有特权。这是 Vista/7 上的一个已知问题,因为如果自定义操作(例如 MSI)作为本地系统帐户运行,Microsoft 已取消对 msiexec.exe
进程的此权限。 IMO,这个问题不需要关于 MSI 的更多信息。
我尝试了 logonUser
、SetTokeninformation
(添加新权限)、设置和更新链接令牌、DuplicatetokenEx
和最终 CreateProcessAsUser
的组合。但是,无论我如何尝试,创建的进程都不会启用备份权限。
我的简单问题是:
- 如何使用本地系统帐户将拥有的所有默认权限运行外部进程?
为什么 Windows 坚持使用受限令牌?
我知道一旦创建了令牌,就不能再添加任何权限了。 SetTokeninformation
将失败。我想知道如何将特权添加到令牌(尚未使用)!
相关:
- https://social.msdn.microsoft.com/Forums/en-US/4a18edd5-88fb-464a-8b57-5c9ec71170dd/windows-installer-45-and-sebackupprivilege
- https://social.msdn.microsoft.com/Forums/en-US/edbd7f01-aeb2-45ac-9264-9c256ee4b314/how-to-get-sebackupprivilege-in-a-deferred-custom-action-exe
- CreateProcessAsUser with elevated privileges
- How to call LogonUser() to get a non-restricted full token inside a Windows Service with UAC enabled?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)