我目前正在编写一个 Windows 服务,它也会在用户登录时执行一些操作。有人的想法是,如果登录来自远程计算机(例如远程桌面),则不执行任何操作,并试图找到一种方法来消除这种情况。但以下不起作用 - 它总是返回 true (Windows 10 64 位 V1809) - 我在这里做错了什么吗?
DWORD SvcHandlerEx(DWORD controlCode, DWORD eventType, ... )
{
...
switch(controlCode)
{
case SERVICE_CONTROL_SESSIONCHANGE:
{
WTSSESSION_NOTIFICATION *pSessInfo = (WTSSESSION_NOTIFICATION *)pEvtData;
// invoke SessionChangeHandler(eventId, pSessInfo->dwSessionId)
}
...
}
...
}
...
VOID SessionChangeHandler(DWORD reason, DWORD sessionId)
{
LPWSTR *pSessionInfo = nullptr;
DWORD dataLen = 0;
BOOL isRDP = false;
if (!WTSQuerySessionInformationW(WTS_CURRENT_SERVER_HANDLE, sessionId,
WTSIsRemoteSession, &pSessionInfo, &dataLen))
{
// Do some error handling...
return;
}
if (dataLen)
{
if …Run Code Online (Sandbox Code Playgroud)