Articles of winapi

在禁用wow64redirect之后,“找不到指定的程序”

我在64位系统上运行32位应用程序(Windows 7)我试图运行Windows备份位于:c:\ System32 \ sdclt.exe。 因为我作为一个32位进程运行,我必须禁用WOW64redirect(使用Wow64DisableWow64FsRedirection)。 问题是,禁用wow64redirect后,我得到“无法find指定的过程”错误。 我的猜测是,在禁用redirect时,sdclt.exe无法加载所有依赖的dll。 注意:1.这种情况只发生在我没有提高特权的情况下。 2.我设置“使用shell执行”为true,因为我想让用户使用我的应用程序没有提高priviliges。 2.编译为64位时不会发生此错误。

如果我使用SYSTEM用户令牌启动login用户进程,是否会危及系统的安全?

从安全angular度来看,我很好奇,做下面描述的有多糟糕? 我需要在本地服务的交互式login用户会话中启动一个高级进程。 这个过程仅仅作为一个消息的 GUI窗口存在,这个窗口对于用户来说是不可见的,每当这个过程开始时,它的类名是随机的。 如果我用本地服务的用户令牌运行这个过程,它会加快速度: //Pseudo-code, error checks are omitted for brevity //This code is run from a local-service with SYSTEM credentials PSID gpSidMIL_High; ConvertStringSidToSid(L"S-1-16-12288", &gpSidMIL_High); HANDLE hToken, hToken2; OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken); DuplicateTokenEx(hToken, MAXIMUM_ALLOWED, NULL, SecurityIdentification, TokenPrimary, &hToken2); SetTokenInformation(hToken2, TokenSessionId, &userSessionID, sizeof(userSessionID)); DWORD dwUIAccess = 1; SetTokenInformation(hToken2, TokenUIAccess, &dwUIAccess, sizeof(dwUIAccess)); //Set "high" mandatory integrity level […]

我如何检测后台应用程序的窗口上的鼠标滚动事件

我怎样才能检测到从c + +应用程序的窗口滚动和移动事件,即使应用程序本身是不活动的(我的意思是最小化或隐藏)我可以得到键盘事件 for (int i = 8; i <= 190; i++) { if (GetAsyncKeyState(i) == -32767){ SaveLogs(i, "log.txt"); wcout << (wchar_t)i; } } /// … int SaveLogs(int key_stroke, char *file){ if ((key_stroke == 1) || (key_stroke == 2)) return 0; FILE *OUTPUT_FILE; OUTPUT_FILE = fopen(file, "a+"); /*cout << key_stroke << endl;*/ if (key_stroke == […]