C ++杀死LogonUI.exe后将窗口置于前台

时间:2016-03-27 17:49:01

标签: c++ windows winapi windows-7

起初我认为启动命令杀死LogonUI.exe的程序在LogonUI.exe被自己重新执行之前就已关闭。

然而,我发现这根本不对,因为实际上程序没有关闭,但在我看来它已经移到了后台(我发现程序仍在运行,这要归功于Tasklist)< / p>

以下是一些试图显示此问题的代码(将在登录屏幕上运行)

如果有人能解决这个问题,那就太棒了。感谢。

#include <iostream>
#include <stdlib.h>
#include <windows.h>
using namespace std;


void Menu(char &sel_menu);
void KillLogonUI();
void Tasklist();

void Menu(char &sel_menu)
{
    cout << "Type 1 to kill LogonUI.exe" << endl;
    cout << "Type 2 to list running processes" << endl;
    cout << endl << "Type 0 to exit" << endl;
    cout << endl << endl << ">> "; cin >> sel_menu;
}

void KillLogonUI()
{
    HWND hWnd =  GetForegroundWindow();

    system("Taskkill /F /IM LogonUI.exe");
    SetForegroundWindow(hWnd);
}

void Tasklist()
{
    system("Tasklist");
}

int main()
{
    char sel_menu;

    do
    {
        Menu(sel_menu);

        switch (sel_menu)
        {
            case '1': KillLogonUI(); break;
            case '2': Tasklist(); break;

            default:
                if (sel_menu != '0')
                    {
                        cout << endl << "Wrong input";
                        Sleep(1000);
                    }
        }
    } while(sel_menu != '0');

    return 0;
}

1 个答案:

答案 0 :(得分:0)

你究竟想要获得什么?登录时运行应用程序?它可以通过下一步完成: 1.创建系统服务(不是用户级服务) 2.运行服务时 - 在winlogon会话"WinSta0\Winlogon"中运行您的应用程序,这里有一篇文章如何使用正确的安全令牌在不同的会话中运行您的应用程序:http://www.codeproject.com/Articles/35773/Subverting-Vista-UAC-in-Both-and-bit-Archite#_articleTop 3.将应用程序属性设置为“最顶层”。 4.服务关闭时 - 关闭您的申请。 这个逻辑适用于从7到10,服务器12,16的所有窗口 - 我在所有窗口中进行了测试并且它可以工作。

杀死LogonIU是个坏主意。如果你需要隐藏它 - 只需隐藏它窗口和/或全屏运行程序。