Нашел код, который сжимает реестр, помогите пожалуйста перевести на Delphi:
| Код | //---------------------------------------------------------------------- // // CompactRegistry // // Compacts the Registry. // //---------------------------------------------------------------------- void CompactRegistry( HWND hDlg ) { TCHAR backupHivePath[1024]; TCHAR backupHiveFile[1024]; TCHAR tmpBackupHiveFile[1024]; HKEY hKey; int hive; static const struct { HKEY RootKey; TCHAR * KeyName; } HiveList[] = { { HKEY_LOCAL_MACHINE, _T("SYSTEM") }, { HKEY_LOCAL_MACHINE, _T("SOFTWARE") }, { HKEY_LOCAL_MACHINE, _T("SAM") }, { HKEY_LOCAL_MACHINE, _T("SECURITY") }, { HKEY_USERS, _T(".DEFAULT") }, { NULL, NULL }, };
SetDlgItemText( hDlg, IDC_OPERATION, _T("Compacting Registry hives:")); SetDlgItemText( hDlg, IDC_PATHNAME, _T(""));
// // Create a backup directory // ExpandEnvironmentStrings( _T("%SystemRoot%\\System32\\Config\\Newsid Backup"), backupHivePath, sizeof( backupHivePath)/sizeof(TCHAR) ); if( CreateDirectory( backupHivePath, NULL )) {
for( hive = 0; HiveList[hive].RootKey; ++hive ) {
SetDlgItemText( hDlg, IDC_PATHNAME, HiveList[hive].KeyName );
_stprintf( backupHiveFile, _T("%s\\%s.bak"), backupHivePath, HiveList[hive].KeyName );
if( RegOpenKey( HiveList[hive].RootKey, HiveList[hive].KeyName, &hKey ) == ERROR_SUCCESS ) {
RegFlushKey( hKey ); RegFlushKey( HKEY_LOCAL_MACHINE );
if( RegSaveKey( hKey, backupHiveFile, NULL ) == ERROR_SUCCESS ) {
RegCloseKey( hKey ); _stprintf( tmpBackupHiveFile, _T("%s\\%s"), backupHivePath, HiveList[hive].KeyName ); RegReplaceKey( HiveList[hive].RootKey, HiveList[hive].KeyName, backupHiveFile, tmpBackupHiveFile );
} else {
RegCloseKey( hKey ); } } } } }
|
|