2013-05-30 31 views
12

Tiếp tục quay lại điều này và không thể tìm ra được ... Tôi đang tạo một ứng dụng cho công việc về cơ bản biên dịch tất cả các công cụ của chúng tôi thành GUI dễ sử dụng hơn. Một trong những công cụ chúng tôi sử dụng là thứ chúng tôi sử dụng từ bên thứ 3 và được lưu trữ dưới dạng Ứng dụng từ xa thông qua RDWeb. Bây giờ tôi cũng có quyền truy cập máy tính từ xa thông thường là tốt và tôi có thể truy cập vào máy tính để bàn thông qua Winform của tôi bằng cách sử dụng MSTSC và this process hoạt động tốt. Tôi tò mò nếu nó có thể chỉ cần tải RemoteAPP và không phải toàn bộ máy tính để bàn trong điều khiển MSTSC để người dùng của tôi không nhận được đến máy tính để bàn đầy đủ. Hoặc nếu có bất kỳ cách nào khác để lưu trữ một RemoteAPP Chỉ trong Winforms.Hosting phiên RemoteAPP trong Winform

Tôi đã xem lại tài liệu MSDN trên ITSRemoteProgram nhưng khi tôi thử làm như sau nó chỉ ném một ngoại lệ. Trình gỡ lỗi dừng tại rdp.RemoteProgram.RemoteProgramMode = true; và đưa ra ngoại lệ HRESULT E_FAIL.

Tôi cũng đã thử sử dụng remoteprogram sau khi sự kiện OnConnected kích hoạt và tôi nhận được kết quả tương tự.

try 
{ 
    rdp.Server = "FFWIN2008R2DC.fflab123.net"; 
    rdp.Domain = "fflab123"; 
    rdp.UserName = "administrator"; 
    IMsTscNonScriptable secured = (IMsTscNonScriptable)rdp.GetOcx(); 
    secured.ClearTextPassword = "password123"; 
    rdp.OnConnected += rdp_OnConnected; 
    rdp.RemoteProgram.RemoteProgramMode = true; 
    rdp.RemoteProgram2.RemoteApplicationName = "Calculator"; 
    rdp.RemoteProgram2.RemoteApplicationProgram = @"C:\Windows\system32\calc.exe"; 

    rdp.Connect(); 
} 
catch (Exception Ex) 
{ 
    MessageBox.Show("Error Connecting", "Error connecting to remote desktop " + " Error: " + Ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); 
} 

Có lẽ tôi đang đi theo cách này sai hoặc có thể thậm chí không thể. Tôi chỉ muốn di chuyển theo đúng hướng tôi không cần ai viết nó cho tôi.

+0

Không ai có thông tin về điều này? Tôi đoán điều đó giải thích lý do tại sao tôi không thể tìm ra nó hoặc là lol. – Nabbic

Trả lời

2

IMsRdpClient.RemoteProgram.RemoteProgramMode chỉ hợp lệ đối với khách hàng được khởi tạo từ id lớp MsRdpClientNotSafeForScripting. Xem this MSDN page cho các CLSID thích hợp hoặc sử dụng lớp tương tác AxMsRdpClientNotSafeForScripting.

var rc = new AxMsRdpClient7NotSafeForScripting(); 
rc.Dock = DockStyle.Fill; 
this.Controls.Add(rc); 
rc.RemoteProgram.RemoteProgramMode = true; 
// ServerStartProgram can only be called on an open session; wait for connected until calling 
rc.OnConnected += (_1, _2) => { rc.RemoteProgram.ServerStartProgram(@"%SYSTEMROOT%\notepad.exe", "", "%SYSTEMROOT%", true, "", false); }; 
rc.Server = "server.name"; 
rc.UserName = "domain\\user"; 
// needed to allow password 
rc.AdvancedSettings7.PublicMode = false; 
rc.AdvancedSettings7.ClearTextPassword = "password"; 
// needed to allow dimensions other than the size of the control 
rc.DesktopWidth = SystemInformation.VirtualScreen.Width; 
rc.DesktopHeight = SystemInformation.VirtualScreen.Height; 
rc.AdvancedSettings7.SmartSizing = true; 

rc.Connect(); 
+0

Cảm ơn bạn đã phản hồi! Vì vậy, tôi đã triển khai một phần thành công. Nó có được cho tôi một bước về phía trước tôi nghĩ nhưng không hoàn toàn ở đó. Bây giờ khi tôi thử và kết nối nó ít nhất là kết nối với RemoteProgramMode đúng và tôi có thể nhìn thấy nó đăng nhập và sau đó vì nó sẽ tải notepad ví dụ nó chỉ ngồi trên một màn hình màu xanh và không bao giờ thực sự tải chương trình. Tôi không nhận được một máy tính để bàn hoặc chỉ là một màn hình màu xanh như nó sẽ tải các ứng dụng nhưng vẫn không thành công. Bất kỳ ý tưởng? – Nabbic

+0

Dường như đăng xuất sau khoảng 5 phút tự động ... – Nabbic

+0

@Nabbic, Nếu bạn không khởi động ứng dụng hoặc nếu bạn cố gắng khởi động một ứng dụng không được phép hoặc không tồn tại, bạn sẽ kết thúc với máy tính để bàn màu xanh chỉ hiển thị. Đảm bảo bạn đang mở chương trình. Bạn có thể xác minh bằng cách sử dụng trình quản lý tác vụ hoặc chương trình khác đang chạy trên máy chủ đích. Ngoài ra, đảm bảo bạn đặt các thành viên 'DesktopWidth' và' DesktopHeight', hoặc bạn bị giới hạn kích thước của điều khiển như được đặt trên biểu mẫu. Thời gian chờ 5 phút là nếu không có ứng dụng nào đang mở trên máy chủ từ xa. – Mitch