使用“0”参数调用“需求”的异常:“请求主体许可失败。”
问题描述:
从PS使用“0”参数调用“需求”的异常:“请求主体许可失败。”
以下块$myAppDomain = [System.AppDomain]::CurrentDomain
$myPrincipal = [System.Security.Principal.PrincipalPolicy]::WindowsPrincipal
$myAppDomain.SetPrincipalPolicy($myPrincipal)
$myPrincipalPermission = New-Object -TypeName System.Security.Permissions.PrincipalPermission -ArgumentList $null, "Administrators"
$myPrincipalPermission.Demand()
我得到了以下异常。
Exception calling "Demand" with "0" argument(s): "Request for principal permission failed." At line:1 char:30 + $myPrincipalPermission.Demand <<<<() + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException
PowerShell中的版本是
$PSVersionTable Name Value ---- ----- CLRVersion 2.0.50727.8762 BuildVersion 6.1.7601.17514 PSVersion 2.0 WSManStackVersion 2.0 PSCompatibleVersions {1.0, 2.0} SerializationVersion 1.1.0.1 PSRemotingProtocolVersion 2.1
我写的基础上,PrincipalPermission
class documentation脚本。
答
简化版本,在登录用户显式为Windows组“用户”的成员的情况下工作。
[System.AppDomain]::CurrentDomain.SetPrincipalPolicy([System.Security.Principal.PrincipalPolicy]::WindowsPrincipal)
$myCP = [System.Threading.Thread]::CurrentPrincipal
$myPP = New-Object -TypeName System.Security.Permissions.PrincipalPermission -ArgumentList $myCP.Identity.Name, "Users"
$myPP.Demand()
如果没有则会引发SecurityException,需求成功。参考 PrincipalPermission.Demand Method() Remarks
时髦。我可以重现此问题(并通过提供当前用户名来解决此问题),但[查看源代码,似乎没有任何解释原因](https://referencesource.microsoft.com/#mscorlib/system/security/permissions/ principalpermission.cs,461) –
你想要完成什么? –