Re[2]: Не могу получить SACL ключа реестра
От: S_Alex74  
Дата: 16.02.02 19:15
Оценка:
Здравствуйте 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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.