From 630117a5a118bb5f5c8fb0916298fa29374cc37e Mon Sep 17 00:00:00 2001 From: Alejandro Rosales Date: Tue, 27 May 2025 22:44:21 +0000 Subject: [PATCH] Mejor en C En lugar de CMD, que sea en C. --- ejecutar_politicas.c | 73 ++++++++++++++++++++++++++++++++++++++++++ ejecutar_politicas.cmd | 53 ------------------------------ 2 files changed, 73 insertions(+), 53 deletions(-) create mode 100644 ejecutar_politicas.c delete mode 100644 ejecutar_politicas.cmd diff --git a/ejecutar_politicas.c b/ejecutar_politicas.c new file mode 100644 index 0000000..9a2965c --- /dev/null +++ b/ejecutar_politicas.c @@ -0,0 +1,73 @@ +#include +#include + +void copiarImagen() { + const char* origen = "img0.jpg"; + const char* destinoDir = "C:\\Shared"; + const char* destino = "C:\\Shared\\img0.jpg"; + + DWORD attr = GetFileAttributesA(origen); + if (attr != INVALID_FILE_ATTRIBUTES && !(attr & FILE_ATTRIBUTE_DIRECTORY)) { + printf("🖼️ Copiando imagen institucional a %s...\n", destino); + CreateDirectoryA(destinoDir, NULL); + if (CopyFileA(origen, destino, FALSE)) { + printf("✅ Imagen copiada correctamente.\n"); + } else { + printf("❌ Error al copiar la imagen.\n"); + } + } else { + printf("⚠️ No se encontró \"%s\". Verifica que esté en la misma carpeta que este programa.\n", origen); + } +} + +void ejecutarScripts(const char* extension) { + WIN32_FIND_DATAA findData; + HANDLE hFind; + char patron[MAX_PATH]; + snprintf(patron, MAX_PATH, "Políticas\\*.%s", extension); + + hFind = FindFirstFileA(patron, &findData); + if (hFind == INVALID_HANDLE_VALUE) return; + + do { + char comando[MAX_PATH]; + snprintf(comando, MAX_PATH, "cmd /c Políticas\\%s", findData.cFileName); + printf("----------------------------------------\n"); + printf("▶ Ejecutando: %s\n", findData.cFileName); + system(comando); + } while (FindNextFileA(hFind, &findData)); + + FindClose(hFind); +} + +int main() { + BOOL esAdmin = FALSE; + HANDLE hToken; + TOKEN_ELEVATION elevation; + DWORD size; + + if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) { + if (GetTokenInformation(hToken, TokenElevation, &elevation, sizeof(elevation), &size)) { + esAdmin = elevation.TokenIsElevated; + } + CloseHandle(hToken); + } + + if (!esAdmin) { + printf("🔐 Requiere privilegios de administrador. Elevando...\n"); + ShellExecuteA(NULL, "runas", GetCommandLineA(), NULL, NULL, SW_SHOWNORMAL); + return 0; + } + + printf("================================\n"); + printf("🚀 Ejecutando scripts en carpeta \"Políticas\"\n"); + printf("================================\n\n"); + + copiarImagen(); + ejecutarScripts("cmd"); + ejecutarScripts("bat"); + + printf("\n✅ Todos los scripts han sido ejecutados.\n"); + system("pause"); + return 0; +} diff --git a/ejecutar_politicas.cmd b/ejecutar_politicas.cmd deleted file mode 100644 index 1bde863..0000000 --- a/ejecutar_politicas.cmd +++ /dev/null @@ -1,53 +0,0 @@ -@echo off -setlocal enableextensions enabledelayedexpansion - -:: ============================ -:: Verifica privilegios de administrador -:: ============================ -net session >nul 2>&1 -if %errorLevel% neq 0 ( - echo 🔐 Requiere privilegios de administrador. Elevando... - powershell -Command "Start-Process '%~f0' -Verb runAs" - exit /b -) - -echo ================================ -echo 🚀 Ejecutando scripts en carpeta "Políticas" -echo ================================ - -:: ============================ -:: Copiar imagen institucional a C:\Shared -:: ============================ -set "ORIGEN_IMG=img0.jpg" -set "DESTINO_IMG=C:\Shared\img0.jpg" - -if exist "%ORIGEN_IMG%" ( - echo 🖼️ Copiando imagen institucional a %DESTINO_IMG%... - if not exist "C:\Shared" ( - mkdir "C:\Shared" - ) - copy /Y "%ORIGEN_IMG%" "%DESTINO_IMG%" >nul - echo ✅ Imagen copiada correctamente. -) else ( - echo ⚠️ No se encontró "%ORIGEN_IMG%". Verifica que esté en la misma carpeta que este script. -) - -:: ============================ -:: Ejecutar scripts .cmd y .bat en /Políticas -:: ============================ -set "CARPETA=Políticas" - -if not exist "%CARPETA%" ( - echo ❌ La carpeta "%CARPETA%" no existe. - pause - exit /b -) - -for %%F in ("%CARPETA%\*.cmd" "%CARPETA%\*.bat") do ( - echo ---------------------------------------- - echo ▶ Ejecutando: %%~nxF - call "%%F" -) - -echo ✅ Todos los scripts han sido ejecutados. -pause