如何在管理员模式下运行的MFC应用程序中创建没有管理员权限的新进程?

时间:2017-03-09 13:21:51

标签: c++ mfc

我想从管理员模式运行的MFC应用程序创建新进程, 并且在这个过程中,新进程应该具有较少的权限,以便我可以以较少的权限运行另一个应用程序。 如果尝试以高权限运行,我无法启动应用程序。这就是我想创建一个新流程的原因 它应该具有较少的权限,以便我可以启动xxxxxx应用程序(在独立用户模式下启动,即没有管理员) 没有任何障碍。

更准确地说,让我清楚地向你解释一下这个问题: 我正在尝试使用" MAPISendMail"发送电子邮件来自MFC应用程序的MAPI32.dll(这是作为"以管理员身份运行"模式运行),Outlook已在独立用户模式下打开。代码看起来像MAPISendMail_Implementation

在上面的链接中我们可以观察下面的代码:

ULONG nSent = lpfnMAPISendMail(0, 0, 
    &MAPImsg, MAPI_LOGON_UI | MAPI_DIALOG, 0);

当它尝试从高权限应用程序(MFC应用程序)访问低权限应用程序(outlook)时,它失败了。

谷歌搜索我在微软论坛MAPISendMail_MSDN看过一些帖子, 他们建议做这个所谓的" lpfnMAPISendMail"通过创建新流程,您将能够成功调用该过程。但我无法得到如何在新流程中调用上述函数。

有人可以指导我怎么做?

1 个答案:

答案 0 :(得分:2)

您可以使用http://jsfiddle.net/03aocump/创建现有访问令牌的受限版本,并使用它来生成CreateRestrictedToken的新流程。