WTSSendMessage не показывает окно сообщения на удаленном рабочем столе - PullRequest
1 голос
/ 10 июня 2019

У меня есть приложение-служба Windows, которое отображает всплывающее окно подтверждения для дальнейших действий.Он отлично работает, когда я устанавливаю приложение службы на локальном компьютере, но когда я устанавливаю его на удаленном компьютере, всплывающее окно подтверждения не отображается.

[DllImport("Kernel32.dll", SetLastError = true)]
static extern int WTSGetActiveConsoleSessionId();
public static IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;

public static int ConfirmPopup(string message, string title)
{
    try
    {
        WTSSendMessage(WTS_CURRENT_SERVER_HANDLE,
            WTSGetActiveConsoleSessionId(), title, title.Length, message,
            message.Length, 3, 0, out int response, true);

        return response;
    }
    catch (Exception ex)
    {
        Trace.WriteLine($"Exception:ConfirmPopup()::{ex.Message}");
        return 0;
    }
}

[DllImport("wtsapi32.dll", SetLastError = true)]
static extern bool WTSSendMessage(
    IntPtr hServer,
    [MarshalAs(UnmanagedType.I4)] int SessionId,
    String pTitle,
    [MarshalAs(UnmanagedType.U4)] int TitleLength,
    String pMessage,
    [MarshalAs(UnmanagedType.U4)] int MessageLength,
    [MarshalAs(UnmanagedType.U4)] int Style,
    [MarshalAs(UnmanagedType.U4)] int Timeout,
    [MarshalAs(UnmanagedType.U4)] out int pResponse,
    bool bWait);

Мы должны показать клиенту демонстрацию на удаленной машине, и она там не работает.На локальной машине работает нормально.

...