在GINA beofe登录界面中运行EXE应用程序(命令行)

时间:2013-06-20 02:36:32

标签: windows winlogon gina

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

您的答案取决于何时您想要运行该程序,特别是关于安全注意序列(SAS,或用户按下CTRL-ALT-Delete)

  • 在SAS之前,请使用WlxDisplaySASNotice
  • 在SAS之后,使用WlxLoggedOutSAS

由于您不想自己编写整个GINA,因此您可以使用包装msgina.dll的自定义Gina。 Here is one I wrote,你可以在Platform SDK中找到我最初的原创作品。

使用该approch,您有机会在某些事件之前或之后执行代码,例如在成功登录后运行程序,例如:

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权限运行,这存在安全风险。沙盒化您的过程可能很难。如果无法突破它,不要假设没人能......