Здравствуйте Alex Fedotov, Вы писали:
AF>На исходный код можно взглянуть?
...
CRegKey rk;
if( !rk.SetPrivilege(SE_SECURITY_NAME) ) {
ShowError( rk.GetLastErrorText() );
return 1;
}
//if( rk.Open(NULL, _T("HKEY_CURRENT_USER")) ) {
//if( rk.Open(NULL, _T("HKEY_CURRENT_USER\\Software")) ) {
if( rk.Open(NULL, _T("HKEY_CURRENT_USER\\Software\\BBB")) ) {
SECURITY_DESCRIPTOR* psr = rk.GetSecurity( SACL_SECURITY_INFORMATION );
...
}
...
SECURITY_DESCRIPTOR* const CRegKey::GetSecurity(const SECURITY_INFORMATION _SecInfo)
{
DWORD dwSize = m_dwBufSize[0] * sizeof(WCHAR);
m_lLastError = ::RegGetKeySecurity( m_hKey, _SecInfo, m_sBuffer[0], &dwSize );
if( m_lLastError == ERROR_INSUFFICIENT_BUFFER ) {
if( !SetBufferSize((dwSize+1)/sizeof(WCHAR)) ) return NULL;
m_lLastError = ::RegGetKeySecurity( m_hKey, _SecInfo, m_sBuffer[0], &dwSize );
}
if( m_lLastError == ERROR_SUCCESS ) {
return reinterpret_cast<SECURITY_DESCRIPTOR*>(m_sBuffer[0]);
}
return NULL;
}
Класс мой (в смысле, не MFC). Ключ в данном случае открывается с KEY_ALL_ACCESS.