Troy Rollo wrote:
Pipe names are currently case sensitive. This affects instmsiw.exe since the service is created as "MSIService" and connected to as "MsiService".
[a solution] would be to have find_object and create_object take a flag that forces case insensitivity even in a case sensitive namespace.
Yes, this is the correct approach. As you correctly noted, the namespace currently determines whether a find is case sensitive or not. There are two problems: 1. The caller of find_object currently cannot tell the function if a case insensitive search is required. 2. The namespace object should really be an NT directory object, which has no notion of case sensitivity.
I plan to address (1) with a rewrite of the way the OBJECT_ATTRIBUTES structure is marshaled to the server. This will include making shared marshaling, sizing, unmarshaling and freeing routines for the structure and it contains the information about whether or not the find_object call should be case insensitive. The approach will also include marshaling of the SECURITY_DESCRIPTOR structure for the start of more NT-like access checks in the object manager. However, I have already spotted numerous places that are not correctly setting the OBJ_CASE_INSENSITIVE in the OBJECT_ATTRIBUTES structure when they should, so these will need to be fixed.
Alexandre, before I start on the marshaling of the OBJECT_ATTRIBUTES structure, is this acceptable with you?
Rob