Ответы Mail.ru: Delphi - почему программа, запущенная из-под IDE, и не из-под IDE, имеют разные привилегии?

Delphi - почему программа, запущенная из-под IDE, и не из-под IDE, имеют разные привилегии?

Есть дельфийская программка, которая тормозит некий процесс методом остановки всех его потоков. Если запустить Дельфи от имени администратора, а из нее - эту программку, то все работает. Причем пофигу, в Debug mode запускать или нет. Если просто запустить скомпилированную программку от имени администратора, она при попытке тормознуть поток получает по рукам с кодом 5 - access denied. Собссно вопрос: что такое привносит дельфийский IDE, чего не хватает самой программе? И как это в нее можно добавить? На ум приходит только какая-то регистрация в качестве дебаггера или нечто в этом духе. Т. е. что запущенная неким "официальным" дебаггером программа имеет дополнительные привилегии. Для желающих поиграться - код тормозящей процесс процедурки: var hThreadSnapshot: THandle; threadEntry: TThreadEntry32; hThread: THandle; OpResult: DWORD; begin hThreadSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); try threadEntry.dwSize := sizeof(TThreadEntry32); Thread32First(hThreadSnapshot, threadEntry); repeat if threadEntry.th32OwnerProcessID=ProcessID then begin hThread := OpenThread(THREAD_ALL_ACCESS, FALSE, threadEntry.th32ThreadID); if hThread = 0 then RaiseLastError('Failed to gain access to thread '+IntToStr(threadEntry.th32ThreadID)+' of process '+IntToStr(ProcessID)); if _DoStop then OpResult:=SuspendThread(hThread) else OpResult:=ResumeThread(hThread); if OpResult<0 then RaiseLastError('Failed to suspend or resume thread '+IntToStr(threadEntry.th32ThreadID)+' of process '+IntToStr(ProcessID)); CloseHandle(hThread); end; until not Thread32Next(hThreadSnapshot, threadEntry); StoppedAs := skPauseThreads; finally CloseHandle(hThreadSnapshot); end; end;

Лучший ответ

Остальные ответы

Да потому что программа запускается самой IDE, и соответственно наделяется теми же правами администратора.

4 года

Я могу запустить и саму программу с правами администратора. Но это не работает.

Возможно IDE имеет цифровую подпись и система считает ее безопасной.

.можете дать свой номер я не могу решить проблему с компом память не может быть read