MSDN.WhiteKnight - Stack Overflow answers
Ответ на ""Отказано в доступе" при работе с процессами"
Answer 833136
Для того, чтобы получить значения этих свойств для процесса, нужно иметь в отношении него право доступа PROCESS_QUERY_LIMITED_INFORMATION. Приложение всегда имеет это право в отношении других процессов того же пользователя, но для процессов других пользователей это право можно получить только при определенных условиях:
Запускающий пользователь должен иметь привилегии отладки (SeDebugPrivilege). По умолчанию эти привилегии доступны группе "Администраторы", но могут быть назначены другим пользователям. Для простоты иногда говорят "права администратора".
При включенном UAC нужно также повышение уровня привилегий (т.е., явное указание, что программа работает с правами администратора).
Если программа всегда должна запускаться с повышенными привилегиями, можно создать манифест и указать в нем это:
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo>
Для теста создадим простую программу для отображения времени работы всех процессов:
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Diagnostics; namespace ConsoleApplication1 { class Program { [STAThread] static void Main(string[] args) { var processes = Process.GetProcesses(); uint c_error = 0; foreach (Process pr in processes) { using (pr) { Console.Write(pr.ProcessName.PadLeft(25)); try { Console.Write("\tRunning: " + DateTime.Now.Subtract(pr.StartTime).TotalHours.ToString("F3") + " hours "); } catch (Exception ex) { Console.Write("\t" + ex.Message); c_error++; } try { Console.Write("\tHasExited: " + pr.HasExited.ToString()); } catch (Exception ex) { Console.Write("\t" + ex.Message); c_error++; } Console.WriteLine(); } } Console.WriteLine(); Console.WriteLine("Processes: {0}, Errors: {1}", processes.Length, c_error); Console.ReadKey(); } } }
Результаты запуска без повышенных привилегий:
ConsoleApplication1.vshost Running: 0,004 hours HasExited: False audiodg Running: 0,003 hours Отказано в доступе browser Running: 0,482 hours HasExited: False wininit Отказано в доступе Отказано в доступе aswidsagenta Отказано в доступе Отказано в доступе browser Running: 0,128 hours HasExited: False svchost Отказано в доступе Отказано в доступе csrss Отказано в доступе Отказано в доступе MDM Отказано в доступе Отказано в доступе taskmgr Running: 0,493 hours HasExited: False svchost Отказано в доступе Отказано в доступе svchost Отказано в доступе Отказано в доступе igfxTray Running: 0,501 hours HasExited: False svchost Отказано в доступе Отказано в доступе PresentationFontCache Отказано в доступе Отказано в доступе igfxHK Running: 0,501 hours HasExited: False WDExpress Running: 0,224 hours HasExited: False svchost Отказано в доступе Отказано в доступе igfxEM Running: 0,501 hours HasExited: False lsm Отказано в доступе Отказано в доступе AvastSvc Отказано в доступе Отказано в доступе svchost Отказано в доступе Отказано в доступе conhost Running: 0,205 hours HasExited: False iusb3mon Running: 0,504 hours HasExited: False browser Running: 0,213 hours HasExited: False LMS Отказано в доступе Отказано в доступе explorer Running: 0,511 hours HasExited: False svchost Отказано в доступе Отказано в доступе dwm Running: 0,511 hours HasExited: False AvastUI Running: 0,504 hours HasExited: False igfxCUIService Отказано в доступе Отказано в доступе csrss Отказано в доступе Отказано в доступе spoolsv Отказано в доступе Отказано в доступе svchost Отказано в доступе Отказано в доступе browser Running: 0,482 hours HasExited: False MSBuild Running: 0,205 hours HasExited: False lsass Отказано в доступе Отказано в доступе browser Running: 0,481 hours HasExited: False conhost Running: 0,000 hours HasExited: False services Отказано в доступе Отказано в доступе DiscSoftBusService Отказано в доступе Отказано в доступе SearchIndexer Отказано в доступе Отказано в доступе wmpnetwk Отказано в доступе Отказано в доступе svchost Отказано в доступе Отказано в доступе jhi_service Отказано в доступе Отказано в доступе GISGKH Payments Running: 0,505 hours HasExited: False browser Running: 0,475 hours HasExited: False browser Running: 0,478 hours HasExited: False DTLite Running: 0,505 hours HasExited: False svchost Отказано в доступе Отказано в доступе service_update Отказано в доступе Отказано в доступе winlogon Отказано в доступе Отказано в доступе browser Running: 0,482 hours HasExited: False ConsoleApplication1 Running: 0,000 hours HasExited: False service_update Отказано в доступе Отказано в доступе browser Running: 0,310 hours HasExited: False browser Running: 0,477 hours HasExited: False sqlwriter Отказано в доступе Отказано в доступе smss Отказано в доступе Отказано в доступе unsecapp Отказано в доступе Отказано в доступе svchost Отказано в доступе Отказано в доступе svchost Отказано в доступе Отказано в доступе System Отказано в доступе Отказано в доступе taskhost Running: 0,512 hours HasExited: False Idle Отказано в доступе Отказано в доступе Processes: 65, Errors: 75
С повышенными привилегиями:
ConsoleApplication1.vshost Running: 0,039 hours HasExited: False audiodg Running: 0,038 hours Отказано в доступе browser Running: 0,517 hours HasExited: False wininit Running: 0,559 hours HasExited: False aswidsagenta Running: 0,549 hours HasExited: False browser Running: 0,163 hours HasExited: False svchost Running: 0,556 hours HasExited: False csrss Running: 0,559 hours HasExited: False MDM Running: 0,554 hours HasExited: False taskmgr Running: 0,528 hours HasExited: False svchost Running: 0,554 hours HasExited: False svchost Running: 0,553 hours HasExited: False igfxTray Running: 0,536 hours HasExited: False svchost Running: 0,557 hours HasExited: False PresentationFontCache Running: 0,537 hours HasExited: False igfxHK Running: 0,536 hours HasExited: False WDExpress Running: 0,259 hours HasExited: False svchost Running: 0,557 hours HasExited: False igfxEM Running: 0,536 hours HasExited: False lsm Running: 0,559 hours HasExited: False AvastSvc Running: 0,556 hours HasExited: False dllhost Running: 0,000 hours HasExited: False svchost Running: 0,552 hours HasExited: False conhost Running: 0,240 hours HasExited: False iusb3mon Running: 0,539 hours HasExited: False browser Running: 0,247 hours HasExited: False LMS Running: 0,519 hours HasExited: False explorer Running: 0,546 hours HasExited: False svchost Running: 0,553 hours HasExited: False dwm Running: 0,546 hours HasExited: False AvastUI Running: 0,539 hours HasExited: False igfxCUIService Running: 0,556 hours HasExited: False csrss Running: 0,561 hours HasExited: False spoolsv Running: 0,554 hours HasExited: False svchost Running: 0,557 hours HasExited: False browser Running: 0,517 hours HasExited: False MSBuild Running: 0,240 hours HasExited: False lsass Running: 0,559 hours HasExited: False browser Running: 0,516 hours HasExited: False services Running: 0,559 hours HasExited: False DiscSoftBusService Running: 0,538 hours HasExited: False ConsoleApplication1 Running: 0,000 hours HasExited: False SearchIndexer Running: 0,536 hours HasExited: False wmpnetwk Running: 0,535 hours HasExited: False svchost Running: 0,557 hours HasExited: False jhi_service Running: 0,519 hours HasExited: False GISGKH Payments Running: 0,539 hours HasExited: False browser Running: 0,510 hours HasExited: False browser Running: 0,513 hours HasExited: False DTLite Running: 0,540 hours HasExited: False svchost Running: 0,554 hours HasExited: False service_update Running: 0,553 hours HasExited: False winlogon Running: 0,559 hours HasExited: False browser Running: 0,517 hours HasExited: False dllhost Running: 0,000 hours HasExited: False service_update Running: 0,553 hours HasExited: False browser Running: 0,345 hours HasExited: False browser Running: 0,512 hours HasExited: False sqlwriter Running: 0,553 hours HasExited: False smss Running: 0,562 hours HasExited: False unsecapp Running: 0,541 hours HasExited: False svchost Running: 0,557 hours HasExited: False svchost Running: 0,557 hours HasExited: False conhost Running: 0,000 hours HasExited: False System Running: 0,562 hours Отказано в доступе taskhost Running: 0,547 hours HasExited: False Idle Отказано в доступе Отказано в доступе Processes: 67, Errors: 4
Как можно увидеть, при обычном запуске ошибку выдает на всех системных процессах, а при запуске с повышенными привилегиями - только на защищенных процессах (audiodg и System).
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.