2013-12-04 1 views
1

Как я могу определить, был ли повышенный или нет определенный процесс. Этот процесс отличается от процесса, в котором работает мой код. Я хотел бы иметь возможность сделать это с помощью PowerShell или C#.Как определить, повышается ли какой-либо конкретный процесс с помощью dotnet или powershell

ответ

0

Пожалуйста, попробуйте этот ответ: https://stackoverflow.com/a/4497572/717732

Это UacHelper будут нужны некоторые незначительные изменения. Например, IsProcessElevated использует OpenProcessToken на CurrentProcess - вам нужно будет изменить функцию IsProcessElevated на функцию и сделать параметр Process, чтобы вы могли проверить любой, а не только текущий.

В общем, этот класс делает все, что вам нужно. Он проверяет свойства безопасности, назначенные процессу. Я думаю, что код говорит сам по себе.

BTW. Если вы считаете, что код подходит для ваших нужд, пожалуйста, отметьте свой вопрос как «дубликат» этого вопроса - он поможет другим найти этот код.

0

Может быть, это может помочь

Get-Process | 
Add-Member -Name Elevated -MemberType ScriptProperty -Value {if ($this.Name -in @('Idle','System')) {$null} else {-not $this.Path -and -not $this.Handle} } -PassThru | 
Format-Table Name,Elevated 

От http://www.powershellmagazine.com/2013/03/29/pstip-detecting-if-a-certain-process-is-elevated/

+0

выше сценарий его большой, и работает, если в процессе вы работаете его от не повышен, но если сам процесс повышается его Безразлично» т работы. – klumsy

+0

Вы правы, я сам это обнаружил, пытаясь проверить код. Существуют дополнительные свойства, которые невозможно прочитать, если вы тестируете неэквивалентный сеанс. Например, свойство Modules процесса равно null (его проще проверить вместо этого для Path и handle). –

Смежные вопросы