WPF идентифицирует удаленный доступ (не Winforms) - PullRequest
0 голосов
/ 01 декабря 2011

Как приложение WPF может узнать, работает ли оно удаленно (через VNC или удаленный рабочий стол)?

В winforms есть System.Windows.Forms.SystemInformation.TerminalServerSession согласно Обнаружение подключения к удаленному рабочему столу , но есть ли верный способ для этого в WPF?

Полагаю, на данный момент может быть взломано иметь невидимый хост Winforms в WPF и использовать его собственные возможности для размещения фиктивной формы выигрыша, которая может идентифицировать то же самое ... но мне это кажется неубедительным!

Будем благодарны за любые материалы!

Thx

Ответы [ 2 ]

3 голосов
/ 01 декабря 2011

Полагаю, что на данный момент можно взломать невидимый хост Winforms в WPF и использовать его собственные возможности для размещения фиктивной формы выигрыша, которая может идентифицировать то же самое ... но мне это кажется неубедительным!

Вам не нужен невидимый хост WinForms ... вы можете просто добавить ссылку на сборку System.Windows.Forms и использовать статическое свойство SystemInformation.TerminalServerSession.

Если вы неЧтобы получить зависимость от WinForms, вы можете использовать GetSystemMetrics Win32 API:

const int SM_REMOTESESSION = 0x1000;

[DllImport("user32")]
static extern int GetSystemMetrics(int nIndex);


public static bool IsTerminalServerSession()
{
    return (GetSystemMetrics(SM_REMOTESESSION) & 1) != 0;
}
1 голос
/ 01 декабря 2011

Этот метод не требует окна Windows Forms, только ссылка на DLL.

Если вы не хотите ссылаться на это, вы можете вызвать метод, чтобы проверить это самостоятельно, реализация выглядит так:следует (я завернул это в классе):

static class SystemInformation
{
    [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
    private static extern int GetSystemMetrics(int nIndex);
    public static bool IsTerminalServerSession
    {
        get
        {
            //copied the Windows Forms implementation
            return (GetSystemMetrics(0x1000) & 1) != 0;
        }
    }
}
...