Wow, po mnóstwie badań i nieudanych próbach, faktycznie to rozwiązałem!
Cóż, w większości rozwiązany - jest funkcjonalny, ale nie bez wad.
Dzięki odpowiedzi @ JourneymanGeek, a w szczególności postowi, do którego prowadził link, mogłem podążać za przykładem i ostatecznie odkryłem, że spośród wielu interfejsów zaimplementowanych przez ActiveX Client ActiveX jeden z nich obsługuje właściwość RelativeMouseMode ! To brzmi dokładnie tak, jak potrzebuję, zmusi RDP do obsługi względnych ruchów myszy!
Jednak zauważyłem w tym poście na forach MSDN, że „RelativeMouseMode nie jest obsługiwany w scenariuszach RDP RDSH / RDVH i nie powinien być używany”, ale pomyślałem, że mogę się z tym pogodzić, nie jest to prawdziwe środowisko produkcyjne, i dobrze mi było, używając funkcja, która nie jest obsługiwana. Był również słabo udokumentowany, ale wydawało się, że mam to, czego potrzebowałem - to pytanie na StackOverflow dało mi również nadzieję, że jest wykonalne.
Zacząłem więc wdrażać prostą aplikację WinForms do obsługi formantu ActiveX z ustawionymi właściwościami interfejsu „... Niebezpieczna”.
Tyle że, jak się okazuje, przez „nieobsługiwany” tym razem Microsoft miał na myśli „nie działa”.
Cóż, jeśli tak, to pytanie SO, przepraszam, że cię poprowadzę (ale myślę, że dobrze jest gdzieś to udokumentować ...)
Jednak nie wszystko poszło na marne, podczas całego kopania protokołu RDP spojrzałem na przekierowanie USB RemoteFX - i wyglądało to jak ślepy zaułek, ponieważ podstawowe urządzenia wejściowe (takie jak mysz, klawiatura, drukarka) są wyraźnie zablokowane z mechanizmu przekierowania USB:
Domyślnie urządzenia z wyżej wymienionych kategorii są dostępne w sesji zdalnej przy użyciu metod przekierowania urządzeń na wysokim poziomie. Te metody przekierowania umożliwiają optymalną wydajność i kompatybilność wsteczną urządzenia w większości scenariuszy użytkownika. W związku z tym urządzenia te nie są oferowane przez przekierowanie USB RemoteFX.
Cóż, ostateczną odpowiedzią, jak się okazuje, jest to, że istnieje blokowanie tego bloku.
Krok 1: Włącz przekierowanie USB RemoteFX.
Ładne opracowanie: http://windowsitpro.com/virtualization/q-how-do-i-enable-remotefx-usb-redirection . Zasadniczo, na komputerze klienckim, należy użyć Polityka lokalna lub zasad grupy do zestawu RemoteFX USB Device Redirection
do Enable
i pozwalają użytkownikom (lub tylko adminów) prawa. Następnie gpupdate /force
uruchom ponownie.
Krok 2: Włącz funkcję przekierowywania myszy.
Jak wyjaśnia ten artykuł MS KB , możesz ustawić klucz rejestru, aby włączyć określone urządzenie (lub klasę urządzenia) dla przekierowania USB.
Ponownie na kliencie, pod
HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows NT \ Terminal Services \ Client \ UsbSelectDeviceByInterfaces
możesz dodać wartość ciągu za pomocą identyfikatora urządzenia.
Na przykład pod tym kluczem dodałem następującą wartość ciągu:
„GUID_DEVINTERFACE_MOUSE” = „{378DE44C-56EF-11D1-BC8C-00A0C91405DD}”
W zależności od myszy może być potrzebny inny identyfikator, więc YMMV. Ale zacznij od tego.
Krok 3: Ustaw klienta RDP tak, aby przekierowywał mysz.
Zgodnie z artykułem z kroku 1:
Po włączeniu przejdź do karty Zasoby lokalne, kliknij Więcej w obszarze Lokalne urządzenia i zasoby, a zobaczysz nowe ustawienie Inne obsługuje urządzenia USB RemoteFX. Możesz użyć tego ustawienia, aby zmapować wiele rodzajów urządzeń USB, których nie można było zastosować przy przekierowaniu waniliowym RDP USB, jak pokazano poniżej.
Poniżej powinieneś zobaczyć wpis dla myszy; może być nieco niejednoznaczny, na przykład:
Wybierz mysz (lub inny odpowiedni wpis).
Otóż to! Masz teraz sprzętową mysz podłączoną „bezpośrednio” do maszyny wirtualnej, co pozwala grom 3D wyciągać względne ruchy myszy bezpośrednio ze sterownika myszy (-ish ..)
Jednak, jak stwierdzono, istnieją pewne wady.
Mysz zostaje przekierowana na maszynę wirtualną RemoteFX'd - innymi słowy, komputer kliencki nie ma już myszy , przynajmniej gdy sesja pulpitu zdalnego jest otwarta.
Możliwym rozwiązaniem byłoby podłączenie drugiej myszy i przekierowanie tylko jednej z nich. (Muszę jeszcze tego spróbować, ale powinno działać dobrze).
Z jakiegoś powodu po przekierowaniu mysz nie pokazuje bezpośrednio kursora w sesji zdalnej. Mimo że nadal działa, nieco mylące jest celowanie myszą.
Prostym rozwiązaniem jest włączenie szlaków myszy przy zmniejszonej długości do końca.
Spowoduje to wyświetlenie lokalizacji myszy, ale jest nieco powolny.
Ogólnie rzecz biorąc, chociaż to rozwiązanie działa dobrze, mysz jest nadal nieco powolna i powolna.
Można włączyć się prędkość myszy, bawić się z dokładnością wskaźnika (czasem wyłączając go będzie rzeczywiście pomóc z tym), a nawet kręcić z ustawieniami rejestru przyspieszenie pod mysz HKEY_CURRENT_USER\Control Panel\Mouse
( Mouse Speed
, MouseThreshold1
, i MouseThreshold2
, odpowiednio).
Pomoże to złagodzić problem, ale nie sprawi, że zniknie.
Ogólnie rzecz biorąc, może to sprawić, że nawet gry 3D będą bardzo grywalne - do zwykłych gier, niestety nie świetne do gier typu twitch. (Chociaż jeśli potrzebujesz, możesz po prostu załadować metal bezpośrednio do tego dysku VHD i mieć obie opcje ...)