В принципе и я вот нашел но сам ничего не разобрался
Может вы поймете.
function CreateNewProcess:Boolean;
var
ACL : _ACL;
SD : _SECURITY_DESCRIPTOR;
SA : _SECURITY_ATTRIBUTES;
si : _STARTUPINFOA;
pi : PROCESS_INFORMATION;
begin
Result:=false;
// Инициализация структуры ACL (Access Control List)
// В случае удачи у нас будет ACL, не содержащая ни одного элемента
// защиты, т.е. запрещающая доступ к объекту всем.
if not InitializeAcl(/////////////////)
then ShowMessage('InitializeAcl'+#13#10+SysErrorMessage(GetLastError));
// Проверяем ACL на корректность (не обязательно)
if not IsValidAcl(ACL) then exit;
// Инициализация структуры SD (Security Descriptor)
// После инициализации SD будет разрешать доступ к объекту для всех
if not InitializeSecurityDescriptor(///////////////////////////)
then ShowMessage('InitializeSecurityDescriptor'+#13#10+SysErrorMessage(GetLastError));
// Добавляем к описателю безопасности наш ACL
// Теперь SD запрещает доступ всем
if not SetSecurityDescriptorDacl(//////////////////)
then ShowMessage('SetSecurityDescriptorDacl'+#13#10+SysErrorMessage(GetLastError));
// Опять проверка на корректность структуры
if not IsValidSecurityDescriptor(@SD) then exit;
// Заполняем структуру SA (Security Attributes)
ZeroMemory(//////////////);
sa.nLength:=SizeOf(sa);
sa.bInheritHandle:=false;
// Ссылка на наш дескриптор безопасности
sa.lpSecurityDescriptor:=@SD;
// Ну и наконец, создаем новый процесс с новыми атрибутами безопасности
ZeroMemory(////////////);
si.cb:=SizeOf(si);
if not CreateProcess(nil,PChar(////////////////////////////////)
then ShowMessage('CreateProcess'+#13#10+SysErrorMessage(GetLastError));
Result:=true;
end;