Требуется запустить приложение, поскольку пользователь разблокирует свой компьютер. Это работает плавно в Win 7 с обычным планировщиком задач. Для XP - я создал C ++ DLL для этого. Кажется, это работает отлично, за исключением того, что это происходит под системной учетной записью (и, следовательно, не отображается на рабочем столе пользователя).
У меня есть 2 функции, первый WLEventLogon запускает процесс по действию системы,
2-й, (я не делал C ++ примерно 15 лет, так что я немного ржавый!), Скорее всего, совершенно неверно. Я пытаюсь заставить простое приложение работать под учетной записью пользователя всякий раз, когда он разблокирует систему.
Ниже мой код - DLL работает, и я проверил методы с помощью rundll32 и использовал их в winlogon / notify
// Here is the event handler for the Winlogon Logon event.
//__declspec( dllexport ) void WLEventLogon (PWLX_NOTIFICATION_INFO pInfo);
WINLOGINDLL_API void WLEventLogon (PWLX_NOTIFICATION_INFO pInfo)
{
const wchar_t* path = L"C:\\path\\app.exe";
ShellExecute(GetDesktopWindow(),L"open",path,NULL,NULL,SW_SHOWNORMAL);
}
WINLOGINDLL_API void Test (PWLX_NOTIFICATION_INFO pInfo)
{
STARTUPINFOW lpStartupInfo;
PROCESS_INFORMATION lpProcessInfo;
ZeroMemory(&lpStartupInfo, sizeof(lpStartupInfo));
ZeroMemory(&lpProcessInfo, sizeof(lpProcessInfo));
lpStartupInfo.cb = sizeof(lpStartupInfo);
lpStartupInfo.dwFlags = STARTF_USESHOWWINDOW;
lpStartupInfo.wShowWindow = SW_SHOW;
CreateProcessAsUser(pInfo->hToken, L"C:\\path\\app.exe",L"test",NULL,NULL,FALSE,NULL,NULL,NULL,&lpStartupInfo,&lpProcessInfo);
}
Функция 'test', похоже, вообще не работает - мой CreateProcessAsUser, скорее всего, совершенно ошибочен.