コード例 #1
0
//------------------------------------------------------------------------------
void GetUserGroupFromRegFile(DWORD rid, char *group, DWORD group_size_max, HK_F_OPEN *hks, char *reg_path)
{
  HBIN_CELL_NK_HEADER *nk_h = GetRegistryNK(hks->buffer, hks->taille_fic, (hks->pos_fhbin)+HBIN_HEADER_SIZE, hks->position, reg_path);
  if (nk_h == NULL)return;

  HBIN_CELL_NK_HEADER *nk_h_tmp;
  char cbuffer[MAX_LINE_SIZE], buffer[MAX_LINE_SIZE];
  DWORD valueSize,i,nbSubKey = GetSubNK(hks->buffer, hks->taille_fic, nk_h, hks->position, 0, NULL, 0);
  for (i=0;i<nbSubKey;i++)
  {
    //get nk of key :)
    nk_h_tmp = GetSubNKtonk(hks->buffer, hks->taille_fic, nk_h, hks->position, i);
    if (nk_h_tmp == NULL)continue;

    //C
    buffer[0]  = 0;
    cbuffer[0] = 0;
    valueSize  = MAX_LINE_SIZE;
    if(ReadBinarynk_Value(hks->buffer, hks->taille_fic, (hks->pos_fhbin)+HBIN_HEADER_SIZE, hks->position, NULL, nk_h_tmp,"C", buffer, &valueSize))
    {
      DataToHexaChar(buffer, valueSize, cbuffer, MAX_LINE_SIZE);
      TraiterGroupDataFromSAM_C(cbuffer, rid,  group,  group_size_max);
    }
  }
}
コード例 #2
0
//------------------------------------------------------------------------------
void GetUserGroupInfos(unsigned int rid, char *group, unsigned int group_size_max, char *reg_path)
{
  int ret = set_sam_tree_access(HKEY_LOCAL_MACHINE,reg_path);
  if (ret == 0)
  {
    //read all groups
    HKEY CleTmp;
    if (RegOpenKey(HKEY_LOCAL_MACHINE,reg_path,&CleTmp)==ERROR_SUCCESS)
    {
      DWORD i,nbSubKey = 0, SubKeysize, valueSize;
      char NomSubKey[MAX_PATH], path[MAX_PATH],buffer[MAX_LINE_SIZE],cbuffer[MAX_LINE_SIZE];
      RegQueryInfoKey (CleTmp,0,0,0,&nbSubKey,0,0,0,0,0,0,0);
      for(i=0;i<nbSubKey;i++)
      {
        NomSubKey[0]=0;
        SubKeysize = MAX_PATH;
        if (RegEnumKeyEx(CleTmp,i,NomSubKey,&SubKeysize,0,0,0,0)==ERROR_SUCCESS)
        {
          //génération du path group
          buffer[0] = 0;
          cbuffer[0] = 0;
          snprintf(path,MAX_PATH,"%s\\%s",reg_path,NomSubKey);
          if((valueSize = ReadValue(HKEY_LOCAL_MACHINE, path, "C", buffer, MAX_LINE_SIZE)))
          {
            DataToHexaChar(buffer, valueSize, cbuffer, MAX_LINE_SIZE);
            TraiterGroupDataFromSAM_C(cbuffer, rid,  group,  group_size_max);
          }
        }
      }
      RegCloseKey(CleTmp);
    }
  }
  restore_sam_tree_access(HKEY_LOCAL_MACHINE,reg_path);
}