nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, StartInfo, ProcessInfo)
В windows 10 - все ок
Запускаю в windows 8 - выскакивает ошибка 50: ERROR_NOT_SUPPORTED
Я так понимаю, дело в правах доступа, но не понимаю где это вообще настраивать. В делфи? в нотепаде? Вроде у него для всех пользователей стоит возможность запускать...
Стикер
инициализацию последних двух параметров выполнил?
да, все в порядке, точно такой же код работает в win10
там все в порядке, точно такой же код работает в win10
покажи лучше полный код вызова
procedure RunDosApp(DosApp: string);var StartInfo: TStartupInfo; ProcessInfo: TProcessInformation; FullPath: string;begin FullPath := DosApp; // Укажите полный путь к исполняемому файлу if not FileExists(FullPath) then begin ShowMessage('Файл ' + FullPath + ' не найден'); Exit; end; FillChar(StartInfo, Sizeof(StartInfo), #0); StartInfo.cb := SizeOf(StartInfo); // Устанавливаем флаг, чтобы указать, что мы хотим использовать wShowWindow. StartInfo.dwFlags := STARTF_USESHOWWINDOW; StartInfo.wShowWindow := SW_SHOWNORMAL; // Инициализируем структуру ProcessInfo. ProcessInfo := Default(TProcessInformation); // Убедимся, что строка DosApp не является только для чтения. UniqueString(FullPath); if not CreateProcess(nil, PChar(FullPath), nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, StartInfo, ProcessInfo) then begin ShowMessage('Ошибка: ' + IntToStr(GetLastError)); Exit; end; // Ждем завершения приложения WaitForSingleObject(ProcessInfo.hProcess, INFINITE); // Закрываем дескрипторы CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); end; RunDosApp('c:\windows\notepad.exe'); запускаю на win10 - все ок, на win8 - ошибка 50
не верная инициализация у StartInfo размер не выставлен
Обсуждают сегодня