Можно ли вызвать TeamViewer.exe с веб-страницы для удаленного подключения к хосту и передачи пароля? - PullRequest
0 голосов
/ 10 сентября 2018

Я надеялся интегрировать кнопку TeamViewer в свое веб-приложение, которое позволило моим пользователям инициировать удаленное подключение к заранее определенному хосту, используя свой локальный экземпляр TeamViewer, установленный на компьютере каждого пользователя. Тем не менее, это вызвало проблемы и кажется намного сложнее, чем я ожидал.

Я попытался вызвать https://start.teamviewer.com/device/<ID>/authorization/password/mode/control с URL-адреса и передать идентификатор устройства, что на самом деле работает (не всегда, так как всегда открывает новую вкладку), однако пользователю каждый раз предлагается ввести учетные данные AD. Несмотря на то, что мы установили предварительно введенные пароли на многих наших хостах. Поэтому это трудоемкое решение, а не идеальный подход.

Моя другая мысль состояла в том, чтобы попытаться вызвать команду C:\Program Files (x86)\TeamViewer\TeamViewer.exe -i <ID> --Password <PASSWORD> из какого-то расширения chrome NativeMessaging, но я не могу заставить это работать.

Я создал свой файл манифеста:

{
  "name": "com.mycompany.myapp",
  "description": "myapp",
  "path": "C:\\Program Files (x86)\\Teamviewer\\TeamViewer.exe",
  "type": "stdio",
  "allowed_origins": [
    "chrome-extension://........cnlfdm/"
  ]
}

Я также создал свою запись в реестре, соответствующую моему файлу манифеста выше.

Затем я вызываю функцию onClick ():

var port = chrome.runtime.connectNative('com.mycompany.myapp');

port.onMessage.addListener(function(msg) {
     console.log("Received" + msg);
});

port.onDisconnect.addListener(function() {
     console.log("Disconnected");
});

port.postMessage({ text: "Hello, my_application" });

Что дает мне ошибку Cannot read property 'sendNativeMessage' of undefined.

В конечном счете, я пытаюсь разрешить пользователям нажимать на кнопку, которая запускает сеанс удаленного управления с заранее заданным хостом, и передает данные пароля (или использует предварительно введенные данные пароля).

Я должен упомянуть, что я пытаюсь вызвать это из функции ng-click() в моем приложении AngularJS, поэтому я не уверен, что это как-то влияет на проблему.

...