我已经为 Windows 7 创建了一个 Credential Launcher,并且能够在 Tile 按钮单击事件之后运行 Windows 应用程序,这非常容易。
我添加了一些注册表设置和*pbAutoLogon = FALSE;
.
但是现在我正在尝试为 Windows XP 做同样的事情。
我应该针对哪个功能或如何获得相同的结果?
我看到您用“Gina”标记了您的问题,所以我猜您知道 XP 上不存在凭据提供程序。
您的答案取决于您想要运行该程序的确切时间,尤其是关于安全注意序列(SAS,或者当用户按下 CTRL-ALT-Delete 时)
WlxDisplaySASNotice
WlxLoggedOutSAS
由于您不想自己编写整个 GINA,您可以使用自定义 Gina 包装msgina.dll
. 这是我写的一个,你可以在 Platform SDK 中找到我开始的原文。
使用该方法,您有机会在某些事件之前或之后执行代码,例如在成功登录后运行程序,例如:
int WINAPI WlxLoggedOutSAS(PVOID pWlxContext, DWORD dwSasType, PLUID pAuthenticationId, PSID pLogonSid, PDWORD pdwOptions, PHANDLE phToken, PWLX_MPR_NOTIFY_INFO pMprNotifyInfo, PVOID * pProfile)
{
int result;
result = pfWlxLoggedOutSAS(pWlxContext, dwSasType, pAuthenticationId, pLogonSid, pdwOptions, phToken, pMprNotifyInfo, pProfile);
if (result == WLX_SAS_ACTION_LOGON)
{
//We have a successful logon, let's run our code
run_my_custom_code();
}
return result;
}
不过,有一些警告:
Winlogon
会等待,但您的用户可能不会。生成一个进程并让它运行。SYSTEM
特权运行,这是一个安全风险。沙箱化您的流程可能很困难。如果你无法摆脱它,不要假设没有人可以......