Visual c++ 如何在不提示输入密码的情况下使用runas?

Visual c++ 如何在不提示输入密码的情况下使用runas?,visual-c++,Visual C++,如何在我的代码中使用runas,而不提示输入密码 SHELLEXECUTEINFO info = {0}; info.cbSize = sizeof(SHELLEXECUTEINFO); info.fMask = SEE_MASK_NOCLOSEPROCESS; info.lpFile = _T("IECapt.exe"); info.lpVerb = "runas"; info.lpParameters = _T("test"); info

如何在我的代码中使用
runas
,而不提示输入密码

   SHELLEXECUTEINFO info = {0};
   info.cbSize = sizeof(SHELLEXECUTEINFO);
   info.fMask  = SEE_MASK_NOCLOSEPROCESS;
   info.lpFile = _T("IECapt.exe");    
   info.lpVerb = "runas";
   info.lpParameters = _T("test");

   info.nShow = SW_HIDE;

   if (ShellExecuteEx (&info))
    {
       WaitForSingleObject (info.hProcess, INFINITE);
    }

如果您知道user和passwort,则可以使用
CreateProcessAsUser
。但是要注意,
CreateProcess
ShellExecute
做不同的事情


您也可以尝试使用
LogonUser[Ex]
+
ImpersonateLoggedOnUser
+
ShellExecuteEx
+
restortoself
,但我不确定这是否有效。

系统如何知道您尝试运行程序的用户的密码?@sharptooth如果帐户是本地的,则不需要密码。然而,我希望真正的答案是通过系统服务进行调解。Cygwin SSHD的实现值得研究Vista/7支持说明。如果您的应用程序要使用管理员权限运行,而当前用户不是管理员,则必须提供密码。否则,常规UAC提示将要求高程。