Esempio n. 1
0
 public int UserSessionGetConsoleSessionId()
 {
     return(UserSessionHelper.GetUserConsoleSession());
 }
Esempio n. 2
0
            internal ImpersonateUser()
            {
                string eventLogContent = "";

                // Log current user identity
                eventLogContent += "Identity before impersonation: [" +
                                   WindowsIdentity.GetCurrent().Name + "]" + Environment.NewLine;

                // get the user token to impersonate.
                int userSessionId = UserSessionHelper.GetUserConsoleSession();

                if (!WTSQueryUserToken((uint)userSessionId, out userTokenHandle))
                {
                    int errorCode = Marshal.GetLastWin32Error();
                    throw new Win32Exception("WTSQueryUserToken failed with error code: [" + errorCode + "]" +
                                             Environment.NewLine + "This will also fail when test is run over TS");
                }

                // do the actual impersonation
                if (!ImpersonateLoggedOnUser(userTokenHandle))
                {
                    int errorCode = Marshal.GetLastWin32Error();
                    throw new Win32Exception("ImpersonateLoggedOnUser failed with error code: [" + errorCode + "]");
                }

                // Log impersonated user identity
                eventLogContent += "Identity after impersonation: [" +
                                   WindowsIdentity.GetCurrent().Name + "] " + Environment.NewLine +
                                   "Session Id used for impersonation: [" +
                                   userSessionId + "]" + Environment.NewLine;

                // Since we are impersonating logged on user,
                // we skip the LoadUserProfile step.
                //



                // Services that change impersonation should call RegDisablePredefinedCache
                // before using any of the predefined handles
                int isPredinedCacheDisabled;

                if (Environment.OSVersion.Version.Major < 6)
                {
                    isPredinedCacheDisabled = RegDisablePredefinedCache();
                }
                else
                {
                    // This API is introduced only from Vista.
                    isPredinedCacheDisabled = RegDisablePredefinedCacheEx();
                }
                // non-zero values indicates fail
                if (isPredinedCacheDisabled != 0)
                {
                    int errorCode = Marshal.GetLastWin32Error();
                    eventLogContent += "RegDisablePredefinedCache returned non-zero value. ErrorCode: [" +
                                       errorCode + "]" + Environment.NewLine;
                }

                // log the events into event log
                EventLog eventLog = new EventLog();

                eventLog.Source = serviceName;
                eventLog.WriteEntry(eventLogContent, EventLogEntryType.Information, eventId); // random event Id
                eventLog.Close();
            }
Esempio n. 3
0
 public bool UserSessionUnlockConsole()
 {
     return(UserSessionHelper.TryUserSessionActivateConsole(UserSessionHelper.GetUserConsoleSession()));
 }