#include #include #pragma comment(lib, "advapi32.lib") int main(int argc, char **argv) { STARTUPINFO StartupInfo; SECURITY_DESCRIPTOR Descriptor; SECURITY_ATTRIBUTES Attributes; PROCESS_INFORMATION ProcessInfo; InitializeSecurityDescriptor(&Descriptor, SECURITY_DESCRIPTOR_REVISION); SetSecurityDescriptorDacl(&Descriptor, TRUE, NULL, FALSE); Attributes.nLength = sizeof(SECURITY_ATTRIBUTES); Attributes.bInheritHandle = TRUE; Attributes.lpSecurityDescriptor = &Descriptor; StartupInfo.cb = sizeof(STARTUPINFO); if (!CreateProcess("C:\\WINDOWS\\SYSTEM32\\CALC.EXE", "CALC.EXE", &Attributes, NULL, TRUE, 0, NULL, NULL, &StartupInfo, &ProcessInfo)) { fprintf(stderr, "failed to create process\n"); return 1; } WaitForSingleObject(ProcessInfo.hProcess, INFINITE); CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); return 0; }