Я использую WTSEnumerateSessions
для получения пользовательских сессий.В большинстве случаев он работает нормально, но иногда возвращает 0 пользовательских сеансов.
Поэтому мы добавили Marshal.GetLastWin32Error()
, чтобы выяснить причину этого.и мы получили код ошибки 5, в котором говорится, что доступ запрещен.
IntPtr ppSessionInfo = IntPtr.Zero;
Int32 pCount = 0;
Int32 retval = WTSEnumerateSessions(server, 0, 1, ref ppSessionInfo, ref pCount);
Log.Write(pCount.ToString());
Int32 dataSize = Marshal.SizeOf(typeof(WTS_SESSION_INFO));
Int64 current = (int)ppSessionInfo;
if (retval == 0 || pCount == 0)
{
Log(Marshal.GetLastWin32Error());
}
this Я узнал, что это отказ в доступе, но я хотел узнать больше.почему ему отказано в доступе при выполнении такого низкоуровневого API, и это тоже иногда не всегда