首页 > 解决方案 > 如何设置按钮以在 Windows 登录屏幕上打开应用程序

问题描述

这是我的第一个问题。

我想知道是否有办法在登录屏幕上设置一个按钮来打开自定义应用程序。

我已经搜索了 Microsoft 文档,然后找到了有关凭据提供程序的信息,但我不想创建 IU 登录。我只想打开这样的应用程序:

在此处输入图像描述

在此处输入图像描述

这就是我想要实现的

如果有什么可以帮助我的,我会很欢迎。

标签: c++windowscredential-providerswinlogonscreen-lock

解决方案


要使用凭据提供程序打开自定义应用程序,有两种方法可以执行此操作。

1) 当触发事件 SetSelected from provider credential 时启动应用程序

HRESULT PasswordResetCredential::SetSelected(BOOL* pbAutoLogon)  
{
    *pbAutoLogon = FALSE;  

    system("start C:\\TestStartApp.exe");

    return S_OK;
}

它可能工作正常,但是当屏幕获得壁纸锁定时,它会自动触发 SetSelected 事件。所以应用程序将再次重新打开。

2) 创建一个 CommanLink 然后在 CommandLinkClicked 事件中启动应用程序

HRESULT PasswordResetCredential::CommandLinkClicked(DWORD dwFieldID)
{

    HRESULT hr = S_OK;

    if (dwFieldID < ARRAYSIZE(_rgCredProvFieldDescriptors) && (CPFT_COMMAND_LINK == _rgCredProvFieldDescriptors[dwFieldID].cpft)) {
        system("start C:\\TestStartApp.exe");
    }

    return hr;

}

两者都有效,但这可能对我们的安全构成巨大风险。大多数开发人员不建议以这种方式使用凭据提供程序。我们正在使用伪造的凭据提供程序来打开应用程序。


推荐阅读