我拥有Windows User C#的用户UserInstallerMoss凭据。获取当前脚本Powershell是否以管理员身份执行(以管理员身份运行)
Windows服务使用凭据UserInstallerMoss执行EXE控制台Aplicaction C#。
EXE控制台Aplicaction使用凭据UserInstallerMoss执行powershell.exe。
服务器是Windows Server 2012 Enterprise。 UAC被禁用。
UserinstallerMOss是本地管理员
PowerShell函数返回$真值:
$ok = IsCurrentUserAdmin
$ok = IsCurrentUserAdmin2
但脚本失败有关 “拒绝访问”
nativehr:0X80070005 OWSSVR.DLL - 访问被拒绝
如果当前脚本Powershell以“以管理员身份运行”执行,我该如何获取?
如何获取脚本Powershell中的当前用户是管理员?
我的函数返回true,但可能是错误的?
PowerShell函数:
Function IsCurrentUserAdmin
{
$ident = [Security.Principal.WindowsIdentity]::GetCurrent()
foreach ($groupIdent in $ident.Groups)
{
if ($groupIdent.IsValidTargetType([Security.Principal.SecurityIdentifier]))
{
$groupSid = $groupIdent.Translate([Security.Principal.SecurityIdentifier])
if ($groupSid.IsWellKnown("AccountAdministratorSid") -or $groupSid.IsWellKnown("BuiltinAdministratorsSid"))
{
return $TRUE
}
}
}
return $FALSE
}
Function IsCurrentUserAdmin2
{
$user = [Security.Principal.WindowsIdentity]::GetCurrent();
(New-Object Security.Principal.WindowsPrincipal $user).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
这与IsCurrentUserAdmin2功能相同 – Kiquenet 2014-09-03 08:52:08
即使您运行脚本提升,它也会返回false? – ojk 2014-09-03 08:53:19