PeerCollaboration.RegisterApplication Method (PeerApplication, PeerApplicationRegistrationType)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Registers the specified PeerApplication for a collaboration session with the calling peer.

Namespace:   System.Net.PeerToPeer.Collaboration
Assembly:  System.Net (in System.Net.dll)

public static void RegisterApplication(
	PeerApplication application,
	PeerApplicationRegistrationType type


Type: System.Net.PeerToPeer.Collaboration.PeerApplication

The PeerApplication for which to register the calling peer within the associated scope (global, local, and link-local).

Type: System.Net.PeerToPeer.Collaboration.PeerApplicationRegistrationType

The type of registration to perform. The application may be registered for just the calling peer or for all peers using the machine.

Exception Condition
  • The Path property on the PeerApplication object passed to application is null.

  • The peer application instance provided has the same globally unique Id as an application which is already registered. The existing registration must be unregistered before a new application can be registered with the provided identifier.


The application and type parameters cannot be null. Both parameters must be specified.


The type parameter is not set to a known value in the PeerApplicationRegistrationType enumeration.


The RegisterApplication operation cannot be completed until the caller has signed-in to the infrastructure.

The calling peer is required to sign in to the peer collaboration infrastructure with the SignIn method prior to calling this method.

Access to this method requires a PermissionState of Unrestricted. This state is created when the Peer collaboration session begins.

The following code example illustrates how to register an application with the Collaboration infrastructure:

// Registering Notepad.exe as a collab application with a fixed GUID.
// Note: If you're using the application to send invitations,
// the same application with the same GUID must be registered on the remote peer machine.
private static PeerApplication RegisterCollabApp()
    PeerApplication application = null;
    string pathToApp = "%SystemRoot%\\notepad.exe";
    Guid appGuid = new Guid(0xAAAAAAAA, 0xFADE, 0xDEAF, 0xBE, 0xEF, 0xFF, 0xEE, 0xDD, 0xCC, 0xBB, 0xAE);

    application = new PeerApplication();
    application.Id = appGuid;
    application.Path = pathToApp;
    application.Description = "Peer Collaboration Sample -- notepad.exe";
    application.PeerScope = PeerScope.All;
    application.CommandLineArgs = "n";
    application.Data = ASCIIEncoding.ASCII.GetBytes("Test");

    Console.WriteLine("Attempting to register the application \"notepad.exe\"...");

        PeerApplicationCollection pac = PeerCollaboration.GetLocalRegisteredApplications(PeerApplicationRegistrationType.AllUsers);
        if (pac.Contains(application))
            Console.WriteLine("The application is already registered on the peer.");
            PeerCollaboration.RegisterApplication(application, PeerApplicationRegistrationType.AllUsers);
            Console.WriteLine("Application registration succeeded!");
    catch (ArgumentException argEx)
        Console.WriteLine("The application was previously registered with the Peer Collaboration Infrastructure: {0}.", argEx.Message);
    catch (PeerToPeerException p2pEx)
        Console.WriteLine("The application failed to register with the Peer Collaboration Infrastructure: {0}", p2pEx.Message);
    catch (Exception ex)
        Console.WriteLine("An unexpected exception occurred when trying to register the application: {0}.", ex.Message);
    return application;

.NET Framework
Available since 3.5
Return to top