diff --git a/a.exe b/a.exe new file mode 100644 index 0000000..496a365 Binary files /dev/null and b/a.exe differ diff --git a/main.c b/main.c new file mode 100644 index 0000000..60299f4 --- /dev/null +++ b/main.c @@ -0,0 +1,51 @@ +#include +#include +#include + + +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; +}