2016-11-02 5 views
0

Я пытаюсь получить информацию DACL из 64-битного ключа реестра из 32-битного процесса.ATLGetDacl, получающий 64-битные ключи реестра из 32-битного процесса

AtlGetDacl("Machine\Software\Somekey", SE_REGISTRY_KEY, &dacl) 

Это перенаправляет на "Machine \ Software \ Wow6432Node \ Somekey", так как я бегу процесс 32bit.

Что мне нужно, это что-то вроде флага samDesired, который доступен в функциях реестра Windows (например, RegOpenKeyEx), знаете ли вы, имеет ли ATL такую ​​вещь и как я могу передать это ATLGetDacl и ATLSetDacl?

Спасибо.

ответ

3

Другая перегрузка AtlGetDacl может содержать ключ реестра в качестве аргумента.

inline bool AtlGetDacl(
    _In_ HANDLE hObject, 
    _In_ SE_OBJECT_TYPE ObjectType, 
    _Inout_ CDacl *pDacl) throw(...) 

Вы можете использовать его для ключа, который вы уже знаете, как открыть с RegOpenKeyEx.

+0

@ HansPassant: Да, это то, что я понял. И он знает, как это сделать с RegOpenKeyEx, по его словам, так что это способ: открыть ключ отдельно, а затем перейти к другой перегрузке AtlGetDacl, которая таким образом сможет обойти перенаправление –

+0

ах, мне было интересно, должно сработать. Отлично, я дам эту попытку, спасибо большое. – Shahab78