操作系统:Windows 语言:C
我有一个要求,例如,我不应该更改exe的清单或exe文件的属性来以管理员身份运行它。有没有机会用createprocess / createprocessasuser api来满足我的要求。这可以通过shellexecute api完成,但是我需要在挂起状态下创建我的进程。这只能通过createprocess或createprocessasuser api来完成。 如果有人可以通过这些api指导我以管理员身份运行程序,那将不胜感激。
答案 0 :(得分:1)
我觉得你运气不好。 ShellExecute将启动第二个提升的应用程序,因为它有清单或因为您使用runas
动词。 CreateProcess不会。
也许您可以使用CreateProcess启动暂停的第二个应用程序,然后可以使用ShellExecute启动实际执行特权操作的提升的第三个应用程序?或者,您可以运行升级的整个应用程序套件,或将功能移动到UAC免除的服务中。
答案 1 :(得分:1)
我认为最简单的解决方案是通过runas /user:administrator "yourprocess.exe"
路由您尝试启动的流程,或者将runas
字符串文字提供给ShellExecute
的第二个参数。这似乎是一个没有文档记录的难题。
ShellExecute(
NULL,
_T("runas"),
_T("notepad.exe"),
_T(""), // params
NULL, // directory
SW_SHOW
);
答案 2 :(得分:0)
这是不可能的,因为会违反这种限制的全部目的!
即使是出于“好意”,允许它仍构成安全漏洞。
Blockquote哦来吧。两件事:你完全低估了坏人(他们中的许多人很聪明,不会问这样的问题),似乎。而且还因为有人想做“hacky”事情并不意味着它是出于恶意目的。 - STATUS_ACCESS_DENIED