我目前正在编写一个使用低级鼠标钩子的应用程序。因为我必须使用具有管理员权限的系统启动应用程序,所以我想创建一个服务(请参阅此处:这是服务的实际用途吗?)。现在我刚刚发现服务不能使用钩子鼠标钩子。所以我需要一个新概念,但我真的不知道从哪里开始。我已经尝试过一个简单的过程,但我无法使用任务调度程序在系统启动时以管理员身份运行它。
那么推荐使用什么?我还应该使用 Windows 服务来启动进程吗?是不是有点矫枉过正?
编辑:我刚刚尝试启动执行挂钩服务的进程。该过程开始了,但看起来它的行为与简单服务的行为相同。我可以安装钩子,但不会调用回调。我用这段代码开始这个过程:
STARTUPINFO info={sizeof(info)};
PROCESS_INFORMATION processInfo;
if (!CreateProcess(path, NULL, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo))
{
std::wstring msg(L"Could not start \"");
msg.append(path);
msg.append(L"\". CreateProcess");
WriteErrorLogEntry((PWSTR)msg.c_str());
return;
}
我该如何解决我的问题?该过程必须以管理员权限运行,但需要另一个上下文?