void ReadInternalAssociations(CObjectVector<CExtInfo> &items) { items.Clear(); NSynchronization::CCriticalSectionLock lock(g_CriticalSection); CKey associationsKey; if (associationsKey.Open(HKEY_CURRENT_USER, kAssociationsPath, KEY_READ) != ERROR_SUCCESS) return; CSysStringVector extNames; associationsKey.EnumKeys(extNames); for(int i = 0; i < extNames.Size(); i++) { const CSysString extName = extNames[i]; CExtInfo extInfo; // extInfo.Enabled = false; extInfo.Ext = GetUnicodeString(extName); CKey key; if (key.Open(associationsKey, extName, KEY_READ) != ERROR_SUCCESS) return; UString pluginsString; key.QueryValue(kExtPlugins, pluginsString); SplitString(pluginsString, extInfo.Plugins); /* if (key.QueryValue(kExtEnabled, extInfo.Enabled) != ERROR_SUCCESS) extInfo.Enabled = false; */ items.Add(extInfo); } }
bool MyGetLogicalDriveStrings(UStringVector &driveStrings) { driveStrings.Clear(); if (g_IsNT) { UINT32 size = GetLogicalDriveStringsW(0, NULL); if (size == 0) return false; UString buffer; UINT32 newSize = GetLogicalDriveStringsW(size, buffer.GetBuffer(size)); if (newSize == 0) return false; if (newSize > size) return false; UString string; for (UINT32 i = 0; i < newSize; i++) { WCHAR c = buffer[i]; if (c == L'\0') { driveStrings.Add(string); string.Empty(); } else string += c; } return string.IsEmpty(); } CSysStringVector driveStringsA; bool res = MyGetLogicalDriveStrings(driveStringsA); for (int i = 0; i < driveStringsA.Size(); i++) driveStrings.Add(GetUnicodeString(driveStringsA[i])); return res; }
void CInfo::Load() { ArcPaths.Clear(); Formats.Clear(); Level = 5; ArcType = L"7z"; ShowPassword = false; EncryptHeaders = false; CS_LOCK CKey key; if (OpenMainKey(key, kKeyName) != ERROR_SUCCESS) return; key.GetValue_Strings(kArcHistory, ArcPaths); { CKey optionsKey; if (optionsKey.Open(key, kOptionsKeyName, KEY_READ) == ERROR_SUCCESS) { CSysStringVector formatIDs; optionsKey.EnumKeys(formatIDs); for (int i = 0; i < formatIDs.Size(); i++) { CKey fk; CFormatOptions fo; fo.FormatID = formatIDs[i]; if (fk.Open(optionsKey, fo.FormatID, KEY_READ) == ERROR_SUCCESS) { GetRegString(fk, kOptions, fo.Options); GetRegString(fk, kMethod, fo.Method); GetRegString(fk, kEncryptionMethod, fo.EncryptionMethod); GetRegUInt32(fk, kLevel, fo.Level); GetRegUInt32(fk, kDictionary, fo.Dictionary); GetRegUInt32(fk, kOrder, fo.Order); GetRegUInt32(fk, kBlockSize, fo.BlockLogSize); GetRegUInt32(fk, kNumThreads, fo.NumThreads); Formats.Add(fo); } } } } UString a; if (key.QueryValue(kArchiver, a) == ERROR_SUCCESS) ArcType = a; key.GetValue_IfOk(kLevel, Level); key.GetValue_IfOk(kShowPassword, ShowPassword); key.GetValue_IfOk(kEncryptHeaders, EncryptHeaders); }
int CStartupInfo::Menu( unsigned int flags, const char *title, const char *helpTopic, const CSysStringVector &items, int selectedItem) { CRecordVector<FarMenuItem> farMenuItems; for(int i = 0; i < items.Size(); i++) { FarMenuItem item; item.Checked = 0; item.Separator = 0; item.Selected = (i == selectedItem); CSysString reducedString = items[i].Left(sizeof(item.Text) / sizeof(item.Text[0]) - 1); MyStringCopy(item.Text, (const char *)GetOemString(reducedString)); farMenuItems.Add(item); } return Menu(flags, title, helpTopic, &farMenuItems.Front(), farMenuItems.Size()); }
void ReadCompressionInfo(NCompression::CInfo &info) { info.HistoryArchives.Clear(); // info.Solid = true; // info.MultiThread = IsMultiProcessor(); info.FormatOptionsVector.Clear(); info.Level = 5; info.ArchiveType = L"7z"; // definedStatus.Maximize = false; info.ShowPassword = false; info.EncryptHeaders = false; NSynchronization::CCriticalSectionLock lock(g_RegistryOperationsCriticalSection); CKey compressionKey; if(compressionKey.Open(HKEY_CURRENT_USER, GetKeyPath(kCompressionKeyName), KEY_READ) != ERROR_SUCCESS) return; { CKey historyArchivesKey; if(historyArchivesKey.Open(compressionKey, kCompressionHistoryArchivesKeyName, KEY_READ) == ERROR_SUCCESS) { for (;;) { wchar_t numberString[16]; ConvertUInt64ToString(info.HistoryArchives.Size(), numberString); UString path; if (historyArchivesKey.QueryValue(numberString, path) != ERROR_SUCCESS) break; info.HistoryArchives.Add(path); } } } /* bool solid = false; if (compressionKey.QueryValue(kSolid, solid) == ERROR_SUCCESS) info.Solid = solid; bool multiThread = false; if (compressionKey.QueryValue(kMultiThread, multiThread) == ERROR_SUCCESS) info.MultiThread = multiThread; */ { CKey optionsKey; if(optionsKey.Open(compressionKey, kCompressionOptionsKeyName, KEY_READ) == ERROR_SUCCESS) { CSysStringVector formatIDs; optionsKey.EnumKeys(formatIDs); for(int i = 0; i < formatIDs.Size(); i++) { CKey formatKey; NCompression::CFormatOptions fo; fo.FormatID = formatIDs[i]; if(formatKey.Open(optionsKey, fo.FormatID, KEY_READ) == ERROR_SUCCESS) { GetRegString(formatKey, kCompressionOptions, fo.Options); GetRegString(formatKey, kCompressionMethod, fo.Method); GetRegString(formatKey, kEncryptionMethod, fo.EncryptionMethod); GetRegUInt32(formatKey, kCompressionLevel, fo.Level); GetRegUInt32(formatKey, kCompressionDictionary, fo.Dictionary); GetRegUInt32(formatKey, kCompressionOrder, fo.Order); GetRegUInt32(formatKey, kCompressionBlockSize, fo.BlockLogSize); GetRegUInt32(formatKey, kCompressionNumThreads, fo.NumThreads); info.FormatOptionsVector.Add(fo); } } } } UInt32 level; if (compressionKey.QueryValue(kCompressionLevelValueName, level) == ERROR_SUCCESS) info.Level = level; CSysString archiveType; if (compressionKey.QueryValue(kCompressionLastFormatValueName, archiveType) == ERROR_SUCCESS) info.ArchiveType = GetUnicodeString(archiveType); if (compressionKey.QueryValue(kCompressionShowPasswordValueName, info.ShowPassword) != ERROR_SUCCESS) info.ShowPassword = false; if (compressionKey.QueryValue(kCompressionEncryptHeadersValueName, info.EncryptHeaders) != ERROR_SUCCESS) info.EncryptHeaders = false; /* if (compressionKey.QueryValue(kCompressionLevelValueName, info.Maximize) == ERROR_SUCCESS) definedStatus.Maximize = true; */ }