تحديد ما إذا كان البرنامج قيد التشغيل على سطح المكتب البعيد

StackOverflow https://stackoverflow.com/questions/159910

سؤال

هل هناك طريقة برنامجي يمكن تحديد متى انها تعمل على سطح المكتب البعيد (Terminal Services)؟

وأود أن تمكين "مهلة الخمول" في البرنامج عند تشغيله على جلسة سطح المكتب البعيد. منذ المستخدمين، كما هو معروف لترك جلسات سطح المكتب البعيد مفتوحة، أريد برنامجي لإنهاء بعد فترة محددة من الخمول. ولكن، لا أريد مهلة الخمول تمكين المستخدمين غير RD.

هل كانت مفيدة؟

المحلول

وGetSystemMetrics (SM_REMOTESESSION) (كما هو موضح في http://msdn.microsoft. كوم / EN-US / مكتبة / aa380798.aspx )

نصائح أخرى

وهنا يكمن C # التعليمات البرمجية المدارة يمكنني استخدام:

/// <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;
    }
}

والأعمال التالية إذا كنت تريد أن تعرف عن تطبيق الخاص بك الذي يعمل في جلسة العمل الخاصة بك:

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

ولكن ليس بشكل عام لأي ID العملية.


إذا كنت تريد أن تعرف عن أي عملية التعسفية التي يمكن أن تعمل في أي دورة التعسفية ثم يمكنك استخدام الأسلوب أدناه.

ويمكنك أولا تحويل معرف العملية إلى معرف جلسة عمل عن طريق الاتصال <لأ href = "http://msdn.microsoft.com/en-us/library/aa382990(VS.85).aspx" يختلط = "noreferrer "> ProcessIdToSessionId . مرة واحدة لديك معرف جلسة يمكنك استخدامه للاتصال: WTSQuerySessionInformation . يمكنك تحديد WTSInfoClass كما WTSIsRemoteSession قيمة، وهذا سوف تعطيك معلومات حول ما إذا كان هذا التطبيق هو اتصال سطح المكتب البعيد أم لا.

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);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top