52 lines
1.4 KiB
C
52 lines
1.4 KiB
C
#include <windows.h>
|
|
#include <stdio.h>
|
|
#include <tchar.h>
|
|
|
|
|
|
int importar_reg(LPCSTR archivo) {
|
|
CHAR comando[MAX_PATH + 100];
|
|
snprintf(comando, sizeof(comando), "regedit.exe /s \"%s\"", archivo);
|
|
|
|
STARTUPINFOA si = { sizeof(si) };
|
|
PROCESS_INFORMATION pi;
|
|
|
|
if (!CreateProcessA(NULL, comando, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
|
|
printf("❌ Error ejecutando regedit con %s\n", archivo);
|
|
return 0;
|
|
}
|
|
|
|
WaitForSingleObject(pi.hProcess, INFINITE);
|
|
CloseHandle(pi.hProcess);
|
|
CloseHandle(pi.hThread);
|
|
return 1;
|
|
}
|
|
|
|
int main() {
|
|
WIN32_FIND_DATAA fd;
|
|
HANDLE hFind = FindFirstFileA("registros\\*.reg", &fd);
|
|
|
|
if (hFind == INVALID_HANDLE_VALUE) {
|
|
printf("❌ No se encontraron archivos .reg\n");
|
|
return 1;
|
|
}
|
|
|
|
// Montar hive NTUSER.DAT
|
|
const char* hivePath = "C:\\Users\\Default\\NTUSER.DAT";
|
|
const char* mountName = "DEFAULT_USER_PROFILE";
|
|
RegLoadKeyA(HKEY_USERS, mountName, hivePath);
|
|
|
|
do {
|
|
char rutaArchivo[MAX_PATH];
|
|
snprintf(rutaArchivo, sizeof(rutaArchivo), "registros\\%s", fd.cFileName);
|
|
printf("📥 Importando: %s\n", rutaArchivo);
|
|
importar_reg(rutaArchivo);
|
|
} while (FindNextFileA(hFind, &fd));
|
|
|
|
FindClose(hFind);
|
|
|
|
RegUnLoadKeyA(HKEY_USERS, mountName);
|
|
printf("✅ Todos los registros aplicados correctamente.\n");
|
|
|
|
return 0;
|
|
}
|