是否可以仅通过代码以管理员身份运行

操作系统:Windows语言:C

我有一个要求,例如,我不应该更改exe的清单或exe文件的属性来以管理员身份运行它。 有没有机会用createprocess / createprocessasuser api来完成我的需求。 这可以通过shellexecute api完成,但是我需要在挂起状态下创建我的进程。 这只能通过createprocess或createprocessasuser api来完成。 如果有人可以通过这些API指导我以管理员身份运行程序,那将不胜感激。

我觉得你运气不好。 ShellExecute将启动第二个提升的应用程序,因为它具有清单或因为您使用runas谓词。 CreateProcess不会。

也许您可以使用CreateProcess启动暂停的第二个应用程序,然后可以使用ShellExecute启动实际执行特权操作的高架第三个应用程序? 或者,您可以运行升级的整个应用程序套件,或将function移动到UAC免除的服务中。

我认为最简单的解决方案是通过runas /user:administrator "yourprocess.exe"路由您尝试启动的进程,或者将runas字符串文字提供给ShellExecute的第二个参数。 这似乎是一个难以记录的function。

 ShellExecute( NULL, _T("runas"), _T("notepad.exe"), _T(""), // params NULL, // directory SW_SHOW ); 

这是不可能的,因为它会违反这种限制的整个目的

即使是出于“好意”,允许它仍构成安全漏洞。

Blockquote哦来吧。 两件事:你似乎完全低估了坏人(他们中的许多人很聪明,不会问这样的问题)。 而且仅仅因为有人想做“hacky”事情并不意味着它是出于恶意目的。 – STATUS_ACCESS_DENIED