CoInitializeSecurity (ole32)
Last changed: RobertChipperfield-212.44.26.236

.
Summary
Registers security and sets the default security values for the process, but this can't be directly called from managed code.
Added
The summary is probably correct but I still managed to call this from my program to lower the default authentication level.

C# Signature:

public enum RpcAuthnLevel
{
    Default =   0,
    None    =   1,
    Connect =   2,
    Call    =   3,
    Pkt     =   4,
    PktIntegrity  =   5,
    PktPrivacy   =   6
}

public enum RpcImpLevel
{
    Default    =   0,
    Anonymous   =   1,
    Identify   =   2,
    Impersonate   =   3,
    Delegate   =   4
}

public enum EoAuthnCap
{
    None = 0x00,
    MutualAuth = 0x01,
    StaticCloaking= 0x20,
    DynamicCloaking= 0x40,
    AnyAuthority= 0x80,
    MakeFullSIC= 0x100,
    Default= 0x800,
    SecureRefs= 0x02,
    AccessControl= 0x04,
    AppID= 0x08,
    Dynamic= 0x10,
    RequireFullSIC= 0x200,
    AutoImpersonate= 0x400,
    NoCustomMarshal= 0x2000,
    DisableAAA= 0x1000
}

[System.Runtime.InteropServices.DllImport("ole32.dll")]
public static extern int CoInitializeSecurity( IntPtr pVoid, int
    cAuthSvc,IntPtr asAuthSvc, IntPtr pReserved1, RpcAuthnLevel level,
    RpcImpLevel impers,IntPtr pAuthList, EoAuthnCap dwCapabilities, IntPtr
    pReserved3 );

Sample Code:

/// <summary>
/// The main entry point for the application.
/// Do not set STAThread since CoInitializeSecurity is called
/// with to high security automatically (and it can only be called once).
/// </summary>
//[STAThread]
static void Main()
{
    // Set threading apartment
    System.Threading.Thread.CurrentThread.ApartmentState = ApartmentState.STA;
    CoInitializeSecurity( IntPtr.Zero, -1, IntPtr.Zero,
        IntPtr.Zero,RpcAuthnLevel.None ,
        RpcImpLevel.Impersonate,IntPtr.Zero, EoAuthnCap.None, IntPtr.Zero );

    Application.MainForm = new MainForm();
    System.Windows.Forms.Application.Run(Application.MainForm);
}

Documentation