It is recommended that you add an ACE based on the Logon Security
Identifier (SID) since this duplicates the process used by the system.
For more information about how to do this, click the following article number to view the article in the Microsoft Knowledge Base:
165194
CreateProcessAsUser() windowstations and desktops
Consider the following options when you experience this problem:
- If you are launching many processes running in the same security context or logon session, you might want to add one ACE versus an ACE for every process.
- If you can keep track of when the process dies, you should remove the ACE when the process has terminated.
- If you cannot track when the process dies, there are several procedures that you can use to remove any unnecessary ACEs. You can enumerate processes, read the Logon Security Identifier (SID) or User SID from the process token, and compare one of them to the ACEs stored in the DACL for the window station and desktop objects. This depends on which ACE you used to secure the object. Remove any ACEs for processes that are no longer running on the system. NOTE: there might be other processes that are adding ACEs to the objects.
- If you are launching many processes, you might want to add an ACE based on the processes logon type. For example, this could be either the Interactive or Batch SID. You would not have to add any additional ACEs for processes with the same logon type.