Attualmente sto scrivendo un programma che utilizza ganci basso livello del mouse. Perché devo avviare l'applicazione con il sistema con privilegi di amministratore, volevo creare un servizio (vedi qui: Is this a practical use of a service?). Ora ho appena scoperto che un servizio non è in grado di utilizzare hook hook-hooks. Quindi ho bisogno di un nuovo concetto, ma non so davvero da dove cominciare. L'ho già provato con un semplice processo, ma non sono stato in grado di utilizzare l'utilità di pianificazione per eseguirlo come amministratore all'avvio del sistema.alternativa a Windows Servizio
Quindi cosa lo consiglio da usare? Devo utilizzare ancora un servizio di Windows per avviare un processo? Non è un po 'eccessivo?
EDIT: Ho appena provato ad avviare il mio processo che esegue l'hook out del servizio. Il processo inizia ma sembra che si comporti come un semplice servizio si comporta. Posso installare il gancio ma il callback non viene chiamato. Sto iniziando il processo con questo codice:
STARTUPINFO info={sizeof(info)};
PROCESS_INFORMATION processInfo;
if (!CreateProcess(path, NULL, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo))
{
std::wstring msg(L"Could not start \"");
msg.append(path);
msg.append(L"\". CreateProcess");
WriteErrorLogEntry((PWSTR)msg.c_str());
return;
}
Come posso risolvere il mio problema? Il processo deve essere eseguito con i diritti di amministratore ma ha bisogno di un altro contesto?
È eccessivo se non c'è un modo più semplice per farlo, cosa a cui non riesco a pensare. Se hai un servizio che genera un processo, allora penso che vada bene. Basta fare in modo che i segnali di controllo del servizio (stop/start/pause, ecc.) Siano passati anche al processo. In questo modo hai un servizio logico, che in realtà è diviso in due processi fisici. –
@PreetSangha Penso che il tuo commento sia abbastanza buono per essere una risposta. – Renan
E non dimenticare che ci sono più account utente attivi contemporaneamente (Windows XP con funzionalità "switch rapido" e qualsiasi versione server di Windows che consente anche a due amministratori di accedere contemporaneamente) –