2016-03-27 3 views
0

Сначала мне показалось, что программа, которая запустила команду для уничтожения LogonUI.exe, была закрыта непосредственно перед тем, как LogonUI.exe был переконструирован сам по себе.C++ Принесите окно на передний план после убийства LogonUI.exe

Однако, я выяснил, что это совсем не так, поскольку на самом деле программа не закрыта, но мне кажется, что она перемещена на задний план (я понял, что программа по-прежнему работает благодаря Tasklist)

Вот код, который пытается показать эту проблему (это будет работать на экране входа в систему)

Если кто-то может решить эту проблему, было бы фантастическим. Благодарю.

#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; 
} 
+0

* «Если бы кто-нибудь мог это решить» * - Вы не объяснили, что это за «это» *. – IInspectable

+0

В этот раз я убил logonui, и он вышел из системы и заставил меня подумать, что мой профиль пользователя удален. потому что мое имя пользователя не было на экране входа в систему. Я перезапустил свой компьютер и был рад видеть мой профиль пользователя ... не полезно, а просто что-то, что со мной произошло однажды. –

ответ

0

Что именно вы хотите достичь? Запустить приложение при входе в систему? Это можно сделать следующим образом: 1. Создайте системный сервис (а не службу уровня пользователя). 2. Когда запуск службы - запустите приложение в сеансе winlogon "WinSta0\Winlogon", в этой статье описано, как запустить приложение в другом сеансе с правильным маркером безопасности: http://www.codeproject.com/Articles/35773/Subverting-Vista-UAC-in-Both-and-bit-Archite#_articleTop 3. Установите свойство приложения «topmost». 4. Когда сервис закрывается - закройте приложение. Эта логика будет работать со всеми окнами от 7 до Windows 10, сервер 12,16 - я тестировался во всем, и он работает.

Killing LogonIU - плохая идея. Если вам нужно скрыть это - просто спрячьте это окно и/или запустите программу в полноэкранном режиме.

Смежные вопросы