Event 1061 - Application Protocol
- Logged Message
- What Is It?
- When Is This Event Logged?
- Example
- Remediation
- Related topics
Logged Message
Windows Internet Explorer 8 displays a dialog box before starting an application that is registered to handle an application protocol. The user must confirm that they intended to start the application. The Application Protocol Handler Dialog security feature protects users from accidentally executing an application with dangerous content.
What Is It?
A protocol in this context is referenced by the prefix of the URL. For example:
- http://www.microsoft.com - refers to the HTTP protocol
- javascript:alert('hello world') - refers to the JavaScript protocol
Developers can register their own application to a URL protocol. For more information, see Registering an Application to a URI Scheme.
Registering your own application would allow you to have a new URL such as:
thing:SomethingThatThingUnderstands
In Windows Internet Explorer 7 when you "launched" an application registered to a URL protocol, Windows Internet Explorer would launch the application without further interaction from the user. In Internet Explorer 8, this behavior is being modified so that the user is first asked to confirm that the application should be launched. This request is made every time the application is launched unless the user indicates otherwise (each confirmation also asks the user if they want to be asked for confirmation in the future).
When Is This Event Logged?
This event is logged when an application registered to a URL protocol is launched.
Binary protocol registered handlers such as http:, https:, file:, mk:, ms-help:, and ftp: will not be logged. A binary protocol is a protocol which is intended or expected to be read by a machine rather than a human being. Binary protocols have the advantage of terseness, which translates into speed of transmission and interpretation.
Example
Perform the following steps to see this event logged in the Internet Explorer Compatibility Test Tool:
Create a webpage with the following contents. For this example call it 1061.html. The file can be placed anywhere. For this example, the file is located on the Desktop.
<html> <head> <title>Test of onenote: application protocol</title> </head> <body> <p>Open the <a href="onenote://C:\Program Files\Microsoft Office\Templates\1033\ONENOTE\12\Stationery\BLANK.ONE"> Notebook.</a></p> </body> </html>
Open a browser and navigate to the webpage. For example:
C:\Users\JohnS\Desktop\1061.html
Click the Notebook link.
Note This assumes you have Microsoft Office OneNote installed.
A dialog box is displayed asking you to confirm that you want to launch OneNote. The same dialog box asks you if you want to be asked this question in the future (uncheck the checkbox if you don't).
The event is logged when the onenote URL is invoked.
If you don't have OneNote on your system you can create your own protocol handler. The following example shows how to register an application, alert.exe in this case, to handle an alert protocol.
Use the registry editor to create the following entries (keys are shown in bold and named values are shown in plain text):
HKEY_CLASSES_ROOT alert (Default) = "URL:Alert Protocol" URL Protocol = "" DefaultIcon (Default) = "alert.exe" shell open command (Default) = "C:\Program Files\Alert\alert.exe" "%1"
The following sample code contains a simple C# console application demonstrating a protocol handler for the alert protocol. Compile this code into an executable called Alert.
using System; using System.Collections.Generic; using System.Text; namespace Alert1 { class Program { static string ProcessInput(string s) { // TODO Verify and validate the input // string as appropriate for your application. return s; } static void Main(string[] args) { Console.WriteLine("Alert.exe invoked with the following parameters.\r\n"); Console.WriteLine("Raw command-line: \n\t" + Environment.CommandLine); Console.WriteLine("\n\nArguments:\n"); foreach (string s in args) { Console.WriteLine("\t" + ProcessInput(s)); } Console.WriteLine("\nPress any key to continue..."); Console.ReadKey(); } } }
Place the Alert.exe into the following directory:
C:\Program Files\Alert
Open a browser and enter the following into the Address bar:
alert:Hello
A prompt will now be displayed asking if you want the Alert program to be run on your computer. Clicking "Allow" will cause this event to be logged. The event is also logged to the Internet Explorer Compatibility Test Tool.
Remediation
If you don't want to be prompted then uncheck the Always ask before opening this type of address checkbox on the first prompt. You won't get the confirmation dialog again. However, the event will be logged each time you launch a registered application, regardless of whether you're prompted or not.