Securable Objects

A securable object is an object that can have a security descriptor. Windows NT supports many different types of securable objects.

All named objects are securable. Some unnamed objects, such as process and thread objects, can have security descriptors, too.

For most securable objects, you can specify an object's security descriptor in the function call that creates the object. For example, you can specify a security descriptor in the CreateFile and CreateProcess functions. In addition, the Win32 API provides functions for getting and setting the security descriptor of an existing object. The following table shows the functions to use for working with the different types of securable objects.

Object type High-level functions Windows NT 3.x functions
Files and directories GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo GetFileSecurity, SetFileSecurity
Mailslots and Named Pipes GetSecurityInfo, SetSecurityInfo GetFileSecurity, SetFileSecurity
Console screen buffer Not supported. Not supported.
Processes, threads, and file-mapping objects GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo SetKernelObjectSecurity, GetKernelObjectSecurity
Access tokens Not supported. SetKernelObjectSecurity, GetKernelObjectSecurity
Window-management objects (window stations and desktops) GetSecurityInfo, SetSecurityInfo GetUserObjectSecurity, SetUserObjectSecurity
Registry objects GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo RegGetKeySecurity, RegSetKeySecurity
Windows NT Service objects GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo QueryServiceObjectSecurity, SetServiceObjectSecurity
Printer objects GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo GetPrinter, SetPrinter
Windows NT network shares GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo NetShareGetInfo and NetShareSetInfo, using level 502.
Interprocess synchronization objects (semaphores, events, mutexes, and waitable timers) GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo SetKernelObjectSecurity, GetKernelObjectSecurity
Private objects (objects private to the creating application) Not supported. CreatePrivateObjectSecurity, DestroyPrivateObjectSecurity, GetPrivateObjectSecurity, SetPrivateObjectSecurity