2013-09-24 8 views
26

Czy można uruchomić plik bat/plik wykonywalny za pomocą zdarzenia przycisku html5? W IE jest to możliwe do osiągnięcia przy użyciu obiektu Shell, jeśli się nie mylę.Czy można uruchomić plik .exe lub .bat na "onclick" w HTML

+1

Zobacz ten link [Jak wykonać lokalny plik przy użyciu Aplikacja HTML?] (Http://www.codeproject.com/Articles/113678/How-to-execute-a-Local-File-using-HTML-Application) – coolprarun

+0

@coolprarun Potwierdziłem również, że podany przez ciebie link działa w moim środowisku ('Win8.1',' IE11'. Nie na "FF27"). Powinieneś opublikować to jako odpowiedź. – IsaacS

Odpowiedz

18

Oto co zrobiłem. Chciałem skonfigurować stronę HTML w naszej sieci, więc nie musiałbym przechodzić do różnych folderów, aby zainstalować lub zaktualizować nasze aplikacje. Więc co zrobiłem było setup plik bat na nasze „wspólne” drive, że każdy ma dostęp, w tym pliku .bat miałem ten kod:

start /d "\\server\Software\" setup.exe 

Kod HTML brzmiała:

<input type="button" value="Launch Installer" onclick="window.open('file:///S:Test/Test.bat')" /> 

(upewnij się, że twoje ukośniki są poprawne, miałem je w drugą stronę i to nie działało)

Wolałem uruchamiać EXE bezpośrednio, ale nie było to możliwe, ale plik .bat pozwolił mi to obejść. Szkoda, że ​​działało w FF lub Chrome, ale tylko IE.

+0

Drogi @Chuff, co jeśli plik nietoperza ma polecenie rejestracji, mam na myśli coś takiego "REG ADD" HKCU \ Software \ ... "' –

25

Nie, to byłoby poważne naruszenie bezpieczeństwa . Wyobraź sobie, że ktoś może uruchamiać się za każdym razem, gdy odwiedziłeś ich stronę internetową.

+0

to prawda, ale jednocześnie śmieję się ...: D – aswzen

18

Jest to możliwe, gdy strona jest otwierana za pośrednictwem ścieżki file:///.

<button onclick="window.open('file:///C:/Windows/notepad.exe')"> 
    Launch notepad 
</button> 

Jednak moment można umieścić go na serwerze internetowym (nawet jeśli masz do niego dostęp za pośrednictwem http://localhost/), otrzymasz błąd:

Error: Access to 'file:///C:/Windows/notepad.exe' from script denied

+0

+1 Właśnie potwierdziłem, że działa to na IE11, ale nie działa w Firefoksie 27 na Win8.1. – IsaacS

+1

@IsaacS Nie mam dostępu do systemu Windows 8, więc niestety nie mogę z tym nic poradzić. Właśnie próbowałem tego ponownie z Firefoksem 28 na Windows 7 i działa, więc dodatkowe zabezpieczenia są prawdopodobnie ograniczone do systemu Windows 8. – Stijn

+2

Pozwala to na "pobieranie" notepad.exe, a nie jego uruchamianie. Firefox 31, Windows 7 – nodiscc

1

nie można uruchomić/Wykonanie pliku .exe który znajduje się na lokalnym komputerze użytkownika lub w witrynie. Użytkownik musi najpierw pobrać plik exe, a następnie uruchomić plik wykonywalny.
Tak więc nie ma możliwości, aby

Poniższy kod działa tylko wtedy, gdy EXE znajduje się na Maszynie Użytkownika.

<a href = "C:\folder_name\program.exe">

+0

Drodzy @coolprarun jeśli mam plik bat w komputerze użytkownika, Jak mogę uruchomić plik bat w chrome przy użyciu javascript lub czegoś innego? Mogłem to zrobić w przeglądarce IE za pośrednictwem ActiveXOject, jednak ten obiekt nie dotyczy chrome. –

4

Można zrobić to na Internet Explorer z komponentu OCX i na przeglądarce Chrome przy użyciu rozszerzenia chrom chrome document w każdym przypadku konieczne są dodatkowe ustawienia w systemie klienta!

Ważnym elementem chromowanym źródła rozszerzeń: Plik

var port = chrome.runtime.connectNative("your.app.id"); 
     port.onMessage.addListener(onNativeMessage); 
     port.onDisconnect.addListener(onDisconnected); 
     port.postMessage("send some data to STDIO"); 

pozwolenie:

{ 
     "name": "your.app.id", 
     "description": "Name of your extension", 
     "path": "myapp.exe", 
     "type": "stdio", 
     "allowed_origins": [ 
      "chrome-extension://IDOFYOUREXTENSION_lokldaeplkmh/" 
     ] 
} 

i okna ustawień rejestru:

HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts\your.app.id 
REG_EXPAND_SZ : c:\permissionsettings.json 
Powiązane problemy