是否可以仅通过代码以管理员身份运行
操作系统: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