ユーザーがコンピュータをロック解除するときにアプリケーションを実行する必要があります。これは、通常のタスクスケジューラでWin 7でうまく動作します。 XP-iveの場合これを行うためのC++ DLLを作成しました。これは、システムアカウントの下でそうすることを除いて、うまくいくように見えます(したがって、ユーザーのデスクトップに表示されません)。Winlogon通知DLL - ログインしたユーザーとしてプロセスを作成する
私は2つの機能を持っているが、最初のWLEventLogonは
第二は、最も可能性の高い乱暴に間違っています(私は少しさびが!イムので、15年のように、C++を行ってhaventは)、システムACCTの下でプロセスを起動します。私は彼がシステムのロックを解除するたびに、ユーザーのアカウントで実行する簡単なアプリケーションを取得しようとしています。 DLL作品とアイブ氏は、全く仕事ができること/
// 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);
}
「試験」機能doesntのは思え通知します。rundll32とWinlogonプロセスでそれらを使用してメソッドをテスト - - 以下
は私のコードで私CreateProcessAsUserおそらく間違っています。