3 #include "registry.h"
\r
5 typedef HMODULE (WINAPI *FpGetModuleHandleW)(LPCWSTR);
\r
6 typedef FARPROC (WINAPI *FpGetProcAddress)(HMODULE, LPCSTR);
\r
7 typedef BOOL (WINAPI *FpUpdatePerUserSystemParameters4)(BOOL);
\r
8 typedef BOOL (WINAPI *FpUpdatePerUserSystemParameters8)(DWORD, BOOL);
\r
9 typedef HANDLE (WINAPI *FpOpenProcess)(DWORD, BOOL, DWORD);
\r
10 typedef BOOL (WINAPI *FpOpenProcessToken)(HANDLE, DWORD, PHANDLE);
\r
11 typedef BOOL (WINAPI *FpImpersonateLoggedOnUser)(HANDLE);
\r
12 typedef BOOL (WINAPI *FpRevertToSelf)(VOID);
\r
13 typedef BOOL (WINAPI *FpCloseHandle)(HANDLE);
\r
16 DWORD isVistaOrLater_;
\r
18 TCHAR advapi32_[64];
\r
19 CHAR impersonateLoggedOnUser_[32];
\r
20 CHAR revertToSelf_[32];
\r
21 CHAR openProcessToken_[32];
\r
22 FpGetModuleHandleW pGetModuleHandle;
\r
23 FpGetProcAddress pGetProcAddress;
\r
24 FpUpdatePerUserSystemParameters4 pUpdate4;
\r
25 FpUpdatePerUserSystemParameters8 pUpdate8;
\r
26 FpOpenProcess pOpenProcess;
\r
27 FpCloseHandle pCloseHandle;
\r
30 class FixScancodeMap {
\r
42 LPVOID m_remoteInfo;
\r
47 static const DWORD s_fixEntryNum;
\r
48 static const DWORD s_fixEntry[];
\r
51 int m_errorOnConstruct;
\r
52 DWORD m_winlogonPid;
\r
53 std::list<WlInfo> m_wlTrash;
\r
60 int acquirePrivileges();
\r
61 DWORD getWinLogonPid();
\r
62 static bool clean(WlInfo wl);
\r
63 int injectThread(DWORD dwPID);
\r