Wie starte ich eine Anwendung über einen Browser?


74

Ist es möglich, eine Anwendung über einen Browser zu starten? Ich spreche nicht vom Öffnen einer Datei über einen Browser (wie das Öffnen einer PDF-Datei mit Adobe Reader), sondern vom Öffnen einer neuen (leeren) Instanz einer Anwendung, die auf dem Computer des Benutzers installiert ist.

Hypothetische Situation: Der Benutzer durchsucht eine Website, auf der Computer aufgelistet sind, die über RDP verwaltet werden können. Er klickt auf einen Link zu 192.168.1.10. Dieser Link öffnet den Microsoft RDP-Client (mstsc.exe) mit der bereits ausgefüllten IP-Adresse.

Ich spreche ausschließlich über das Windows-Universum.

Ist das Ding auch außerhalb von ActiveX und IE machbar?

Ist es ratsam, dies im IE mit ActiveX zu versuchen?


roblox.com ist eine Spieleseite , auf der jeder Benutzer seinen Client installieren und seine Website besuchen muss, um den Spieleclient zu starten. Sie haben es also so eingerichtet, dass sie eine Anwendung direkt von ihrer Site aus starten. Ich habe ihre Quelle durchgesehen und sie tun es nicht so, wie brendan sagt ...
georgiaboy82

@ georgiaboy82, prüfen, ob die installierte App Aufgabe von Frontend-Entwicklern oder Backend-Entwicklern ist oder nicht?
Sai

Antworten:


10

Sie können eine Anwendung nicht wirklich im wahrsten Sinne des Wortes "starten". Sie können den Benutzer wie angegeben auffordern, ein Dokument (dh eine PDF-Datei) zu öffnen, und Windows versucht, die Standard-App für diesen Dateityp zu verwenden. Viele Anwendungen haben eine Möglichkeit, dies zu tun.

Beispielsweise können Sie RDP-Verbindungen als RDP-Datei speichern. Wenn Sie auf Ihrer Site einen Link zu so etwas setzen, kann der Benutzer direkt eine RDP-Sitzung starten:

<a href="MyServer1.rdp">Server 1</a>

Ich lerne gerade, was ActiveX ist, und ich weiß, dass es zum Ausführen von Anwendungen in einem Browser verwendet werden kann. Sollte das nicht möglich sein? Ich habe versucht, diese Anweisungen zu befolgen, um Notepad über den Browser zu starten, obwohl dies nicht funktioniert hat. codeproject.com/Articles/113678/…
Celeritas

2
@Celeritas: Dies funktioniert nur in Windows und älteren Versionen von IE. Dies ist eine alte Technologie, die ausläuft und keine zu früh.
Siride

22

Die richtige Methode besteht darin, Ihr benutzerdefiniertes URL-Protokoll wie folgt in der Windows-Registrierung zu registrieren:

[HKEY_CLASSES_ROOT\customurl]
@="Description here"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\customurl\shell]

[HKEY_CLASSES_ROOT\customurl\shell\open]

[HKEY_CLASSES_ROOT\customurl\shell\open\command]
@="\"C:\\Path To Your EXE\\ExeName.exe\" \"%1\""

Sobald die oben genannten Schlüssel und Werte hinzugefügt wurden, rufen Sie auf der Webseite einfach "customurl: \\ parameter1 = xxx & parameter2 = xxx" auf. Sie erhalten die gesamte URL als Argument in exe, das Sie in Ihrer exe verarbeiten müssen. Ändern Sie 'customurl' mit dem Text Ihrer Wahl.


1
Hallo .... wie kann ich feststellen, ob eine Anwendung nicht installiert ist und wenn nicht, sollte das Installationsprogramm heruntergeladen werden? Wenn ich beispielsweise customurl://den Browser mit JavaScript aufrufe und die Anwendung installiert ist, wird sie ausgeführt. Wenn die Anwendung jedoch nicht installiert ist und diese URL in Chrome aufgerufen wird, wird die Google-Suchseite mit dem Ergebnis von angezeigt customurl://. Weißt du, wie man es macht?
jstuardo

Ich bin mir nicht sicher, ob es einen anderen sauberen Weg gibt, aber eine schnelle Idee, die mir gekommen ist, ist: Wenn Sie Ihre App dem Server melden können, dass sie geöffnet ist, und wenn dies eine Zeitüberschreitung darstellt, leiten Sie den Benutzer zu einem Download um Seite oder eine Webimplementierung Ihrer Anwendung. Verwenden Sie ein von der Webseite übergebenes Token, um die Clientinstanz zu identifizieren, während die Anwendung Berichte erstellt.
Abhijith CR

5

Einige Anwendungen starten sich selbst über Protokolle. wie iTunes mit "itms: //" Links. Ich weiß jedoch nicht, wie Sie das bei Windows registrieren können.


Ich weiß, dass dieser Thread alt ist, ich habe das gleiche Problem. Es gibt unzählige Informationen zum Installieren von Protokollhandlern, aber ich kann das nicht bei der Arbeit auf dem Computer jedes Benutzers tun (die IT würde mich buchstäblich umbringen ...)
Nurchi

4
Sie sollten dies nicht manuell auf dem Computer jedes Benutzers tun. Dies sollte Ihre Anwendung während des Installationsprozesses tun.
Mikhail

3

Wir verwenden einen Sonicwall VPN. Es wird ein Java-Applet gestartet, das mstc mit allen Einstellungen für Anmeldeinformationen startet. Sie können dies wirklich nicht ohne ein Java-Applet oder ein ActiveX-Plugin tun.

Microsoft verwendet diese Technik selbst auf seinem Server für kleine Unternehmen, um in das Netzwerk zu gelangen. Ich würde nicht sagen, dass es eine schreckliche Idee ist, solange die Unabhängigkeit der Plattform nicht wichtig ist.


-2

Sie können SilverLight verwenden, um eine Anwendung über den Browser zu starten (dies funktioniert nur unter IE und Firefox, neuere Versionen von Chrome unterstützen dies nicht).

Beispielcode hier


Silverlight ist jetzt tot . Microsoft (oder sonst jemand) unterstützt dies nicht mehr. TBH dies war tatsächlich einer der Gründe für den Niedergang, es ist eine massive Sicherheitslücke, solche Dinge tun zu können.
Liam

-7

Das gleiche habe ich mit einem lokalen Webserver und PHP erreicht. Ich habe ein Skript verwendet, das enthältshell_exec um eine Anwendung lokal zu starten.

Alternativ können Sie Folgendes tun:

<a href="file://C:/Windows/notepad.exe">Notepad</a>

28
Beachten Sie, dass shell_execAnwendungen auf dem Webserver ausgeführt werden. Der Link bewirkt normalerweise, dass die Datei heruntergeladen wird.
James P.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.