2017-01-26 18 views
0

Так что мне нужно очистить историю диалогового окна запуска пользователя, с которой я могу отлично справиться с «reg delete HKEY_CURRENT_USER \ Software \ Windows и т. Д.» Из окна с расширенными окнами на вход в систему но то, что я ищу, - это та же команда, но из процесса powershell SYSTEM. Я уже использовал psexec для создания окна powershell, которое работает как SYSTEM, но поскольку вы не можете просто использовать HKEY_CURRENT_USER в качестве SYSTEM с теми же результатами, мне это сложно. Если бы я мог просто запустить эту команду, но как имя пользователя \ Администратор, то у меня не было бы этой проблемы.Запуск команды в качестве администратора из процесса SYSTEM

Также следует отметить, что если я могу как-то захватить имя пользователя вошедшего в систему пользователя (из SYSTEM все еще) в одной строке в виде простого текста (без другого вывода в поле зрения), тогда я могу сохранить имя пользователя в переменной и преобразуйте его в SID и вместо этого используйте HKEY_USERS.

P.S. Не спрашивайте, почему я запускаю PowerShell как SYSTEM, я знаю, что я делаю: D

+0

Вы смотрели на HKU отрасли? Он содержит все пользовательские реестры, обозначенные значениями SID. Sysinternals, конечно же, представляет собой инструмент, который переводит SID на понятные для пользователя имена учетных записей и наоборот. – vonPryz

ответ

0

вы можете использовать get-process в контексте powershell и фильтровать процесс, где выполняется процесс explorer.exe, получить учетную запись он работает под ним, чтобы преобразовать в SID и пройти через реестр.

+0

Простите, не могли бы вы представить рабочий пример, я не уверен, как это сделать, но это определенно звучит так, как будто это сработает. – aden54577

0

что-то вроде этого, при условии, что только один процесс explorer.exe запущен, что является нормой на клиентской ОС Windows.

$proc = Get-CimInstance Win32_Process -Filter "name = 'explorer.exe'" 
$owner = Invoke-CimMethod -InputObject $proc -MethodName GetOwner 
$username = $owner.user 

$ username будет содержать пользователя, $ owner также будет содержать домен и несколько других вещей.

преобразовать в Sid

$objUser = New-Object System.Security.Principal.NTAccount($owner.Domain, $owner.User) 
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier]) 
$strSID.Value