The ISecurityOptions interface is implemented in OLE32.DLL. The IID is

IID_ISecurityOptions {0000015F-0000-0000-C000-000000000046}

The ISecurityOptions methods are (as ordered in the virtual function table after the IUnknown methods):

Offset Method
0x0C IsObjectCreationAllowed
0x10 IsMethodInvocationAllowed

with prototypes:

HRESULT IsObjectCreationAllowed (PVOID, GUID *, ULONG, INT, ULONG, INT *, INT *, ULONG *); 
HRESULT IsMethodInvocationAllowed (PVOID, INT, ULONG, INT *, INT *, ULONG *); 


Instances of a class that implements the ISecurityOptions interface are creatable from a CLSID:

CLSID_GlobalOptions {0000034B-0000-0000-C000-000000000046}

The GlobalOptions object also implements the IGlobalOptions interface.

As implemented in OLE32 for the GlobalOptions class, neither ISecurityOptions method can succeed unless the COM Run Time already has security data, as from an earlier call to CoInitializeSecurity.


The ISecurityOptions interface is supported by OLE32.DLL and is new for Windows Vista.

This interface appears to be completely undocumented.