Files
policies/main.c
2025-05-27 16:46:00 -06:00

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;
}