所以我需要清除一个用户的运行对话框历史记录,我可以通过登录用户机器上的提升的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
答案 0 :(得分:0)
您可以在系统上下文powershell下使用get-process并过滤explorer.exe进程正在运行的位置,获取正在运行的帐户,然后使用转换为SID并通过注册表。
答案 1 :(得分:0)
$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