0

我已经为 Windows 7 创建了一个 Credential Launcher,并且能够在 Tile 按钮单击事件之后运行 Windows 应用程序,这非常容易。

我添加了一些注册表设置和*pbAutoLogon = FALSE;.

但是现在我正在尝试为 Windows XP 做同样的事情。

我应该针对哪个功能或如何获得相同的结果?

4

1 回答 1

1

我看到您用“Gina”标记了您的问题,所以我猜您知道 XP 上不存在凭据提供程序。

您的答案取决于您想要运行该程序的确切时间,尤其是关于安全注意序列(SAS,或者当用户按下 CTRL-ALT-Delete 时

  • 在 SAS 之前,使用WlxDisplaySASNotice
  • 在 SAS 之后,使用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特权运行,这是一个安全风险。沙箱化您的流程可能很困难。如果无法摆脱它,不要假设没有人可以......
于 2013-06-20T03:08:24.727 回答