2010-08-05 32 views
7

Có cách nào để kiểm tra bên trong trình duyệt (ví dụ: javascript) nếu người dùng đang chạy trong phiên Máy tính từ xa không?Cách phát hiện, từ trình duyệt, nếu người dùng đang chạy trong phiên Máy tính từ xa?


Nếu người dùng đang chạy trình duyệt của họ bên trong Máy tính từ xa (ví dụ: Dịch vụ đầu cuối), tôi muốn tắt hoạt ảnh trên trang web.

Nếu đây là một ứng dụng bản địa, như trái ngược với một trang web, tôi có thể thực hiện kiểm tra này sử dụng:

//Native code 
isRemoteSession = GetSystemMetrics(SM_REMOTESESSION); 

hoặc

//Managed Code: 
isRemoteSession = System.Windows.Forms.SystemInformation.TerminalServerSession; 

Có một tấm séc tương tự mà có thể được thực hiện bên trong trình duyệt?

Lưu ý: Giả sử cho các mục đích của cuộc thảo luận này mà trình duyệt chúng ta đang nói về là Internet Explorer     8.


Cập nhật One: Có lẽ cái gì đó trong How can you get the terminal service client machine name from javascript?

+1

+1 bởi vì nó sẽ là một tính năng nâng cao khả năng sử dụng tuyệt vời cho nhiều trang web. –

Trả lời

1

Có lẽ bạn có thể đọc biến môi trường SESSIONNAME? Đối với phiên giao diện điều khiển, nó phải là CONSOLE và cho phiên RDP, nó phải là RDP-TCP theo sau là một số.

+0

Đọc biến môi trường với Javascript của khách hàng trong trình duyệt? Tôi nghi ngờ điều đó. – Joey

0

Tôi giả sử bạn đang nói về một máy chủ đầu cuối của công ty cụ thể, không phải bất kỳ máy chủ đầu cuối nào. Bạn không thể cung cấp hình động cho địa chỉ IP cụ thể của TS.

+0

Không, bất kỳ máy chủ đầu cuối nào. Nếu bạn RDP vào máy nhà của bạn từ nơi làm việc, và đi duyệt trang web của tôi: hình động không nên chơi. –

1

Bạn có thể hiển thị mã phát hiện qua ActiveX hoặc BHO (ví dụ: assign a property to the window object in BHO) nếu bạn sử dụng IE.

Nếu không, nếu bạn đang sử dụng trình phát ActiveX để phát hoạt ảnh, hãy xem tài liệu của người chơi để xem liệu nó có tự động điều chỉnh tốc độ khung hình dưới màn hình từ xa hay không.

Bạn luôn có thể cung cấp phiên bản băng thông thấp của trang web và hướng dẫn người dùng chọn trang web thay vì trang web thông thường nếu phát lại video không thỏa đáng.

Đối với lời khuyên bằng văn bản một dịch vụ-aware ứng dụng đồ họa thiết bị đầu cuối, kiểm tra graphic effects consideration, và general performance guidelines

+1

"Cho phép người dùng chọn phiên bản băng thông thấp" là câu trả lời đúng. –

+0

Ben, không thực sự như vậy mà vẫn yêu cầu tải trang một lần trước khi bạn có thể chọn. Ngoài ra, băng thông cần thiết không thực sự là vấn đề đối với RDP, đó là hình ảnh động, hình ảnh lớn, v.v. vì những người này điều hướng trang web không thể sử dụng được thông qua RDP (vì bản cập nhật hiển thị ảnh hưởng đến tương tác). – Joey

9

Giải pháp của tôi là sử dụng CSS @media truy vấn cho tối thiểu và giá trị tối đa của color media feature. Dựa trên thử nghiệm, RDP chỉ có vẻ có 5 bit cho mỗi màu, thay vì 8 bit cho mỗi màu của máy tính để bàn thông thường của bạn.

Giải pháp này, tất nhiên, không hoàn hảo, vì bạn sẽ nhận được nhiều phản hồi sai từ những người không sử dụng RDP, nhưng chỉ xảy ra có màn hình có độ sâu màu thấp. Tuy nhiên:

  • Nếu bạn ở trong môi trường tương đối được kiểm soát như mạng nội bộ của công ty, bạn có thể cảm thấy tự tin hơn rằng "độ sâu màu thấp" = "RDP".
  • Nhiều yếu tố hình ảnh cần điều chỉnh cho RDP trên trang web, cần điều chỉnh chính xác vì độ sâu màu thấp (gradient, mờ dần, hoạt ảnh, v.v.), và do đó, nó thực sự có ý nghĩa để kiểm tra độ sâu màu hơn là RDP mỗi se.

Đây là một ví dụ phù hợp với tôi trong phiên bản Firefox và Chrome gần đây. Xem ảnh chụp màn hình bên dưới.

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Test RDP detection</title> 
     <style type="text/css"> 
      @media all { li.color { display: none; } } 
      @media all and (min-color: 1) { li.color.color-depth-1 { display: block; } } 
      @media all and (min-color: 2) { li.color.color-depth-2 { display: block; } } 
      @media all and (min-color: 3) { li.color.color-depth-3 { display: block; } } 
      @media all and (min-color: 4) { li.color.color-depth-4 { display: block; } } 
      @media all and (min-color: 5) { li.color.color-depth-5 { display: block; } } 
      @media all and (min-color: 6) { li.color.color-depth-6 { display: block; } } 
      @media all and (min-color: 7) { li.color.color-depth-7 { display: block; } } 
      @media all and (min-color: 8) { li.color.color-depth-8 { display: block; } } 

      /* 5 bits per color seems to be the max for RDP */ 
      @media all and (max-color: 5) { 
       .not-rdp { display: none; } 
      } 
      @media all and (min-color: 6) { 
       .rdp-only { display: none; } 
      } 
     </style> 
    </head> 
    <body> 
     <p>This page uses CSS <tt>@media</tt> queries to detect whether you 
      are viewing it over RDP&mdash;heuristically, by looking at the 
      color depth of your display.</p> 

     <ul> 
      <li class="color color-depth-1">Your display is not monochrome!</li> 
      <li class="color color-depth-2">Your display has at least 2 bits per color.</li> 
      <li class="color color-depth-3">Your display has at least 3 bits per color.</li> 
      <li class="color color-depth-4">Your display has at least 4 bits per color.</li> 
      <li class="color color-depth-5">Your display has at least 5 bits per color.</li> 
      <li class="color color-depth-6">Your display has at least 6 bits per color.</li> 
      <li class="color color-depth-7">Your display has at least 7 bits per color.</li> 
      <li class="color color-depth-8">Your display has at least 8 bits per color.</li> 
     </ul> 

     <p>You are <span class="not-rdp">not</span> using RDP.</p> 
     <p class="rdp-only">This is only visible over RDP.</p> 
    </body> 
</html> 

screenshot showing test page with and without RDP

Tuy nhiên, cách tiếp cận khác dọc theo những dòng là sử dụng javascript để kiểm tra giá trị của biến screen.colorDepth.

+1

Điều này rất thông minh! –

+2

Lưu ý rằng độ sâu màu được cấu hình trong máy khách RDP: xem trình đơn thả xuống Nâng cao/Hiển thị/Màu sắc. –

+1

Chỉ cần tạo ra một fiddle cho điều này để mọi người kiểm tra nhanh chóng: https://jsfiddle.net/7cqqpeqe/ - dường như không hoạt động như một phương thức nữa. – PhonicUK

1

Điều này không nên được thực hiện hoặc quyết định bởi đơn đăng ký của bạn. Trên máy khách RDP (như MS RDC), người dùng có thể chọn tắt hình động vv Người dùng cũng có thể tắt chức năng này trên máy chủ (máy chủ đầu cuối hoặc máy chủ RDP)

+0

Các tùy chọn hiệu suất kết nối RDP (chẳng hạn như hình động, hình nền, vv) không được tiếp xúc với ứng dụng trình duyệt và trình duyệt sẽ hiển thị hoạt ảnh CSS/JavaScript bất kể cài đặt RDP. Cho đến khi có một API tiếp xúc để xem liệu các hoạt ảnh và các tính năng khác có nên bị vô hiệu hóa trong một ứng dụng web, tất cả những gì chúng ta có thể làm là các thủ thuật nhỏ để phát hiện môi trường. – Dai

Các vấn đề liên quan