Question

Existe-t-il un moyen que mon programme peut déterminer lorsqu'il est exécuté sur un bureau à distance (services Terminal Server)?

Je souhaite activer un "délai d'inactivité". sur le programme lorsqu'il est exécuté sur une session de bureau à distance. Étant donné que les utilisateurs sont réputés pour laisser les sessions de Bureau à distance ouvertes, je souhaite que mon programme se termine après une période d'inactivité spécifiée. Mais, je ne veux pas que le délai d'inactivité soit activé pour les utilisateurs autres que de RD.

Était-ce utile?

La solution

GetSystemMetrics (SM_REMOTESESSION) (comme décrit dans http://msdn.microsoft. com / fr-us / library / aa380798.aspx )

Autres conseils

Voici le code géré C # que j'utilise:

/// <summary>
/// Indicates if we're running in a remote desktop session.
/// If we are, then you MUST disable animations and double buffering i.e. Pay your taxes!
/// 
/// </summary>
/// <returns></returns>
public static Boolean IsRemoteSession
{
    //This is just a friendly wrapper around the built-in way
    get
    {
        return System.Windows.Forms.SystemInformation.TerminalServerSession;
    }
}

Ce qui suit fonctionne si vous souhaitez connaître votre application en cours d'exécution dans VOTRE session:

BOOL IsRemoteSession(void)
{
   return GetSystemMetrics( SM_REMOTESESSION );
}

Mais pas en général pour les ID de processus.

Si vous souhaitez connaître les processus arbitraires pouvant s'exécuter dans une session quelconque, vous pouvez utiliser la méthode ci-dessous.

Vous pouvez d'abord convertir l'ID de processus en ID de session en appelant ProcessIdToSessionId . Une fois que vous avez l'ID de session, vous pouvez l'utiliser pour appeler: WTSQuerySessionInformation . Vous pouvez spécifier WTSInfoClass comme valeur WTSIsRemoteSession , ce qui vous indiquera si cette application est une connexion de bureau à distance ou non.

BOOL IsRemoteSession(DWORD sessionID)
{
   //In case WTSIsRemoteSession is not defined for you it is value 29
   return WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, sessionID, WTSIsRemoteSession, NULL, NULL);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top