How to launch an application from a browser? - windows

Is it possible to launch an application from a browser? I am not talking about opening a file from a browser (like open a PDF with Adobe Reader), but rather opening a new (blank) instance of an application that is installed on the user's machine.
Hypothetical situation: User browses a website that lists computers that can be managed via RDP. He clicks on a link to 192.168.1.10, that link opens Microsoft RDP client (mstsc.exe) with that ip address already filled out.
I am talking strictly about Windows universe.
Is that thing even doable outside of ActiveX and IE?
Is it wise to attempt this in IE with ActiveX?

The correct method is to register your custom URL Protocol in windows registry as follows:
[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\""
Once the above keys and values are added, from the web page, just call "customurl:\\parameter1=xxx&parameter2=xxx" . You will receive the entire url as the argument in exe, which you need to process inside your exe. Change 'customurl' with the text of your choice.

You can't really "launch an application" in the true sense. You can as you indicated ask the user to open a document (ie a PDF) and windows will attempt to use the default app for that file type. Many applications have a way to do this.
For example you can save RDP connections as a .rdp file. Putting a link on your site to something like this should allow the user to launch right into an RDP session:
Server 1

#AbhijithCR 's reply works well. To register the protocol via a .bat file, do something like this
set key=customurl
reg add HKCR\%key% /ve /d "URL:Description"
reg add HKCR\%key% /v "URL Protocol" /d ""
reg add HKCR\%key%\shell
reg add HKCR\%key%\shell\open
reg add HKCR\%key%\shell\open\command /ve /d ""c:\path to\your.exe" ""%%1"""
For me getting all the quotes and the double percent signs right was the tricky part.

Some applications launches themselves by protocols. like itunes with "itms://" links. I don't know however how you can register that with windows.

We use a sonicwall vpn. It launches a java applet that launches mstc with all the credentials setup. You really can't do this without a java applet or activex plugin.
Microsoft uses this technique itself on their small business server for getting inside the network. I wouldn't say it is a terrible idea, as long as platform independence isn't important.

You can use SilverLight to launch an application from the browser (this will work only on IE and Firefox, newer versions of chrome don't support this)
Example code here

I achieved the same thing using a local web server and PHP. I used a script containing shell_exec to launch an application locally.
Alternatively, you could do something like this:
Notepad

Related

How can we make a ftp link open in windows explorer on Windows?

Been trying to find a way to do this for a while.
Opening a link in an windows explorer window instead of a browser.
For example using this link : ftp://username:pass#ftp.domain.com:80
And opening it in Windows Explorer.
Is it possible to dictate how windows should react when clicking on that link in a email ?
Thank you Fabian H!
Your solution works fine for me :-)
I made just a small change to your code, infact I wrote:
[HKEY_CLASSES_ROOT\IE.FTP\shell\open\command]
#="C:\\Windows\explorer.exe" %1
Instead of:
[HKEY_CLASSES_ROOT\IE.FTP\shell\open\command]
#="C:\\Windows\\explorer.exe %1"
This second one didn't work for me :-(
But now I can finally enjoy using explorer.exe as the default FTP Client!!
PS:
Tested on WIndows 7
Save these lines in a file with a file name ending .reg and double klick the file:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\IE.FTP\shell\open\command]
#="C:\\Windows\\explorer.exe %1"
[HKEY_CLASSES_ROOT\IE.FTP\shell\open\ddeexec\Application]
#="Explorer"
Tested on WIndows 8.1 64bit.
Thanks to Perneel for his link.
The Windows registry keys shown before didn't work for me, but this works:
HKEY_CURRENT_USER\Software\Microsoft\FTP
Use Web Based FTP = "yes"
Just change value to "no".
(Windows 7 Pro x64)
I was fumbling around looking for how to do this and I ultimately decided to go with the "Add Network Location" wizard method as described here by "nhinkle".
However after doing so, I got a link that generated this shortcut:
ftp://MYFTP_LOGINID#FTPADDRESS/Some/Folder/Navigation/&Stuff/
More what it actually looks like:
ftp://123445_65432#78.13.223.184/root/main/servers/current/
Then was prompted for my login credentials, and thats it. Does not open in Chrome and I just did Send To > Desktop (shortcut) and moved that shortcut to the folder I wanted it in. Now I can open the FTP location from explorer by hitting the link instead of typing the address into the address bar, and it is not opening up in any internet browsers.
I only have one ftp account, dont know much about any background magic that the wizard may have done regarding registry/etc, and I feel like deleting the shortcut wont really undo any of that if it did happen, so if someone could test this and confirm whether or not it works, that'd be great.
Just my 2c :)
HKCU\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\ftp\UserChoice
Check it out, i got the above answer working by deleting this entry
For regularly used FTP sites, if you don't want to make registry edits, create a shortcut using the following format and your site will open in Windows Explorer.
%windir%\explorer.exe ftp://

Passing arguments while launching program from browser

I am trying to launch an application (.exe) from my browser.
The specific app needs 4 arguments/parameters when launching, which are: firstname, lastname, id, info
Is there a way to add these arguments on the Internet Explorer address bar when i launch my program?
I mean something like this:
"myapp:// -firstname -lastname -id -info"
(I only managed to add those arguments straight to the windows registry, it worked that way. But thats no help... i need them to be inputted when launching the app )
I have added this to my windows registry:
[HKEY_CLASSES_ROOT\myapp]
#="URL:myprogram Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\myapp\DefaultIcon]
#="\"C:\\myapp.exe\""
[HKEY_CLASSES_ROOT\myapp\shell]
[HKEY_CLASSES_ROOT\myapp\shell\open]
[HKEY_CLASSES_ROOT\vsa\shell\open\command]
#="\"C:\\myapp\" "%1"
Thanks for help already! I hope someone knows how to fix this... :)
ps. Im using windows 7 64 bit and Internet Explorer 10.
You cannot simply pass multiple command line arguments to your application (unless they're listed explicitly in the registry as you've shown).
Instead, you must code your application's executable so that it is able to process the Application Protocol URL string. So your code is invoked by the browser like so:
C:\apps\myapp.exe "myapp:myParam?myParam2&myParam3&myParam4"
The executable must be able to process this string and handle it appropriately. You must take care to avoid security holes in the parsing of this string, as ANY webpage could exploit a hole here to escape the browser sandbox and attack the user's system.
There's more information on Application Protocols in this post: http://blogs.msdn.com/b/ieinternals/archive/2011/07/14/url-protocols-application-protocols-and-asynchronous-pluggable-protocols-oh-my.aspx

Use installed a 3rd party file explorers. How do I get the register default explorer program via win32?

I guess it's like total commander or similar type program where they replace the default folder browser. How do I know via win32, what replacement program the user is used instead of explorer.exe
There's no officially supported mechanism in Windows for changing the default folder browser.
However anything that does "replace Explorer" has to set itself as the default action for the HKEY_CLASSES_ROOT\Folder key, so I would start by looking there.

Customizable Windows right-click file uploader?

I'm looking for a "right-click upload" application like RightLoad - an application that can upload media files to a remote FTP server from the Windows Explorer's context menu. I want to customize the application to serve as a customized image uploading tool to a PHP-based CMS.
The user would upload images and other media files to a defined FTP account (I'm also very open for other methods of transport, as long as they are supported by run-off-the-mill web hosting stacks) that they could then use in the CMS they log in to.
For me to be able to do these customizations, the application would have to be Open Source - RightLoad is "only" Freeware. Alternatively, I'm open for closed-source and commercial suggestions as long as they allow "pre-packaged" server settings that can easily be deployed to the user.
Does anybody know such a tool compatible with at least the most current versions of Windows (XP, Vista, 7)?
Bounty
Thanks all for the great input. In the case at hand, I decided it's easiest for me to stick with RightLoad and create a workflow in which the URL presented by RightLoad after the upload is copy+pasted into the CMS. I am putting a bounty on this because I think it's a worthy question for future generations, and I want to be the first one to put up a 500 bounty under the new bounty system :)
You could just use the send to menu using window's My network Places like this http://techie-buzz.com/how-to/right-click-and-send-to-ftp.html
I think WinSCP might have everything you want:
Open Source under GNU GPL
Windows Explorer's 'Send To' Context Menu
Drag 'n Drop Shell Extension
lots of additional features
and it can be scripted and is more secure than FTP due to using SSH
If you insist on open source, why not create a custom context menu handler and send it using some open source FTP client?
I would have to check the details, if it's really viable, but I would start with it.
I just had an idea, tested and working:
use regedit to edit HKEY_CLASSES_ROOT/*/Shell
add a key in shell called FTP to Mysite, in the default value set it to FTP to Mysite.
then add a key to the FTP key you just created called command, in the command default value use:
C:\Program Files (x86)\Internet Explorer\iexplore.exe http://www.mysite.com?file=%1
what this will do is open IE and the address www.mysite.com?file=C:\path\to\file.jpg
now using $_GET you can get the file address, upload it via php to where ever, even add an interface...
now when the user right clicks on any file, they can upload it via your web site by clicking FTP
1) another software is RightLoad , i use it that this moment!
2) The nice software I used over years, was FLING. It adds Right Click menu in windows explorer... However, I have left the software, because till today (version 2.35) fling DOESNT support SFTP (And nowadays on all sites I use SFTP!!)
3) I DONT like SEND-TO menu! (because I think passwords saved in WINDOWS can be easily stolen by virus..)

How to locate a file in windows explorer

I have a application to list all music files in user machine, a "Explorer" button is using to quickly open Windows Explorer and highlight the file in Windows Explorer. I tried ShellExecute, but it doesn't work, the API will launch associate application. Any Windows API can do that? Thanks in advance.
You can simply start explorer.exe with the /select argument, as detailed in this Knowledge Base article:
Explorer /select,C:\TestDir\TestApp.exe
You can create an IE instance and navigate to your folder, then query the IShellBrowser service from the top level browser service and get the active view's IShellView interface. Use IShellView::SelectItem to select items.
Remember to call IWebBrowser::Quit when you don't need the explorer window.
This method can not get around Windows Vista's User Interface Privilege Isolation. If the folder is opened in a process with a different integrity level, a broker IE extension is needed to continue the automation.

Resources