从SYSTEM进程以管理员身份运行命令

时间:2017-01-26 09:58:37

标签: powershell registry system administrator

所以我需要清除一个用户的运行对话框历史记录,我可以通过登录用户机器上的提升的PowerShell窗口中的“reg delete HKEY_CURRENT_USER \ Software \ Windows etc ...”来完美地完成,但是我是什么要做的是同样的命令,但来自SYSTEM powershell过程。我已经使用psexec创建了一个以SYSTEM身份运行的PowerShell窗口,但由于你不能只使用HKEY_CURRENT_USER作为SYSTEM,结果相同,我发现它很难。如果我可以运行该命令,但作为用户名\ Administrator,那么我就没有这个问题。

另外需要注意的是,如果我能以某种方式在纯文本的一行中获取登录用户的用户名(来自SYSTEM仍然)(没有其他输出),那么我可以将用户名存储在变量中并转换到SID并改为使用HKEY_USERS。

P.S。不要问为什么我运行PowerShell作为SYSTEM,我知道我在做什么:D

2 个答案:

答案 0 :(得分:0)

您可以在系统上下文powershell下使用get-process并过滤explorer.exe进程正在运行的位置,获取正在运行的帐户,然后使用转换为SID并通过注册表。

答案 1 :(得分:0)

假设只有1个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