typedef BOOL (WINAPI *FpRevertToSelf)(VOID);\r
typedef BOOL (WINAPI *FpCloseHandle)(HANDLE);\r
\r
-typedef BOOL (WINAPI *FpRegisterShellHook)(HWND, DWORD);\r
-\r
typedef struct {\r
- DWORD retval_;\r
DWORD pid_;\r
TCHAR advapi32_[64];\r
CHAR impersonateLoggedOnUser_[32];\r
FpRevertToSelf pRevertToSelf;\r
FpOpenProcessToken pOpenProcessToken;\r
\r
- info->retval_ = 0;\r
-\r
hAdvapi32 = info->pGetModuleHandle(info->advapi32_);\r
\r
pImpersonateLoggedOnUser = (FpImpersonateLoggedOnUser)info->pGetProcAddress(hAdvapi32, info->impersonateLoggedOnUser_);\r
\r
HANDLE hProcess = info->pOpenProcess(PROCESS_QUERY_INFORMATION, FALSE, info->pid_);\r
if (hProcess == NULL) {\r
- info->retval_ = 1;\r
- return 0;\r
+ return 1;\r
}\r
\r
ret = pOpenProcessToken(hProcess, TOKEN_QUERY | TOKEN_DUPLICATE , &hToken);\r
if (ret == FALSE) {\r
- info->retval_ = 2;\r
- return 0;\r
+ return 2;\r
}\r
\r
ret = pImpersonateLoggedOnUser(hToken);\r
if (ret == FALSE) {\r
- info->retval_ = 3;\r
- return 0;\r
+ return 3;\r
}\r
\r
info->pUpdate(0, 1);\r
\r
ret = pRevertToSelf();\r
if (ret == FALSE) {\r
- info->retval_ = 4;\r
- return 0;\r
+ return 4;\r
}\r
\r
info->pCloseHandle(hToken);\r
}\r
\r
LUID luid;\r
- if (!LookupPrivilegeValue(NULL, _T("SeDebugPrivilege"), &luid)) {\r
+ if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid)) {\r
ret = 2;\r
goto exit;\r
}\r
if (!_tcscmp(pe.szExeFile, _T("winlogon.exe"))) {\r
DWORD sessionId;\r
\r
- if (ProcessIdToSessionId(pe.th32ProcessID, &sessionId) == FALSE) {\r
- pid = 0;\r
- break;\r
- }\r
-\r
- if (sessionId == mySessionId) {\r
- pid = pe.th32ProcessID;\r
- break;\r
+ if (ProcessIdToSessionId(pe.th32ProcessID, &sessionId) != FALSE) {\r
+ if (sessionId == mySessionId) {\r
+ pid = pe.th32ProcessID;\r
+ break;\r
+ }\r
}\r
}\r
bResult = Process32Next(hSnap, &pe);\r
ret = 5;\r
goto exit;\r
}\r
+ DWORD result = -1;\r
+ GetExitCodeThread(hThread, &result);\r
+ ret = result;\r
CloseHandle(hThread);\r
\r
exit:\r
{\r
ScancodeMap *origMap, *fixMap;\r
Registry reg(HKEY_CURRENT_USER, _T("Keyboard Layout"));\r
+ // Windows7 RC not support Scancode Map on HKCU?\r
+ //Registry reg(HKEY_LOCAL_MACHINE, _T("SYSTEM\\CurrentControlSet\\Control\\Keyboard Layout"));\r
DWORD origSize, fixSize;\r
bool ret;\r
int result = 0;\r