Ejemplo n.º 1
0
string CIniFile::ValueName(const string &keyname, S32 const valueID) const
{
   S32 sectionId = findSection(keyname);
   if(sectionId == noID)
      return "";
   return ValueName(sectionId, valueID);
}
Ejemplo n.º 2
0
string CIniFile::ValueName( string const keyname, unsigned const valueID) const
{
  long keyID = FindKey( keyname);
  if ( keyID == noID)
    return "";
  return ValueName( keyID, valueID);
}
Ejemplo n.º 3
0
// Получение изменяемого имени параметра. 
// Тоже используется UID без префикса
string GetValueName(const string& Suffix)
{
	string Uid = GenerateUidAsString("");
	string ValueName(Uid.t_str(), Uid.Length() - 5);

	ValueName += Suffix;

	DBGRPTDBG("GetValueName", "returning value_name='%s'", ValueName.t_str());

	return ValueName;
}
Ejemplo n.º 4
0
size_t QueryRequest::get_indices(StringRef name, IndexVec* indices) {
  set_has_names_for_values(true);

  if (value_names_.get_indices(name, indices) == 0) {
    if (value_names_.size() > elements_count()) {
      // No more space left for new named values
      return 0;
    }
    if (name.size() > 0 && name.front() == '"' && name.back() == '"') {
      name = name.substr(1, name.size() - 2);
    }
    indices->push_back(value_names_.add(ValueName(name.to_string())));
  }

  return indices->size();
}
Ejemplo n.º 5
0
string CIniFile::GetValueName( const string &section, S32 const keyID) const
{
   return ValueName( section, keyID);
}
Ejemplo n.º 6
0
string CIniFile::GetValueName(S32 const sectionID, S32 const keyID) const
{
   return ValueName(sectionID, keyID);
}
//*****************************************************************************
//*****************************************************************************
DWORD _CopyRegistryKey(HKEY hkSource, HKEY hkDest)
{
	// Info über den Key besorgen
	DWORD nSubKeys = 0;
	DWORD MaxSubkeyLen = 0;
	DWORD MaxClassLen = 0;
	DWORD nValues = 0;
	DWORD MaxValuenameLen = 0;
	DWORD MaxValueLen = 0;

	LONG lErg = RegQueryInfoKey(hkSource,
								NULL,			// Class Buffer
								NULL,			// ->Classbuffer Size
								NULL,			// Reserved
								&nSubKeys,		// Anzahl Unterschlüssel
								&MaxSubkeyLen,
								&MaxClassLen,
								&nValues,
								&MaxValuenameLen,
								&MaxValueLen,
								NULL,			// ->Länge des Security Descriptors
								NULL);			// ->FILETIME des letzten Schreibzugriffs

	if(lErg!=ERROR_SUCCESS)
		return 1;

	MaxSubkeyLen++;
	MaxClassLen++;
	MaxValuenameLen++;
	MaxValueLen++;

	// Zuerst durchenumerieren der Subkeys
	STRING_AP	SubkeyName(MaxSubkeyLen);

	for(DWORD i=0;i<nSubKeys;i++)
	{
		DWORD dwKeynameLen = MaxSubkeyLen;
		FILETIME ft;
		// Namen des Keys ermitteln
		lErg = RegEnumKeyEx(hkSource,i,SubkeyName.s,&dwKeynameLen,NULL,NULL,NULL,&ft);
		if(lErg!=ERROR_SUCCESS)
			continue;
		// Source-Subkey öffnen
		HKEY hkNewSource = NULL;
		lErg = RegOpenKeyEx(hkSource,SubkeyName.s,0,KEY_READ,&hkNewSource);
		if(lErg!=ERROR_SUCCESS)
			continue;

		// Destination-Subkey erzeugen
		HKEY hkNewDest = NULL;
		lErg = RegCreateKeyEx(hkDest,SubkeyName.s,NULL,NULL,0,KEY_WRITE,NULL,&hkNewDest,NULL);
		if(lErg!=ERROR_SUCCESS)
		{
			RegCloseKey(hkNewSource);
			hkNewSource = NULL;
			continue;
		};
		
		// Rekursiv weiterbearbeiten
		_CopyRegistryKey(hkNewSource,hkNewDest);

		// Keys zumachen
		RegCloseKey(hkNewSource);
		RegCloseKey(hkNewDest);

	};
	

	// Jetzt durchnumerieren und Schreiben der Values
	STRING_AP ValueName(MaxValuenameLen);
	STRING_AP Value(MaxValueLen);
	for(DWORD i=0;i<nValues;i++)
	{
		DWORD dwVnl = MaxValuenameLen;
		DWORD dwType = 0;
		DWORD dwDs = MaxValueLen;
		
		lErg = RegEnumValue(hkSource,i,ValueName.s,&dwVnl,NULL,&dwType,(BYTE*)Value.s,&dwDs);
		if(lErg!=ERROR_SUCCESS)
			continue;

		lErg = RegSetValueEx(hkDest,(const char*)ValueName.s,0,dwType,(const unsigned char*)Value.s,dwDs);

	};



	return 0;
};