以管理员身份运行的导入 - 证书奇怪行为

时间:2018-04-23 00:29:42

标签: windows powershell permissions

我有一个安装证书并安装驱动程序的驱动程序安装脚本。

我将其作为内置管理员帐户运行,该帐户应具有完全管理员权限(无管理员批准模式,无UAC)。这一切都在Windows 10 1709中。

现在我的设置就是:

installdrivers.ps1

$root_dir = "$env:HOMEDRIVE/Drivers"
$output_dir = $root_dir + '/' + 'certs'

Get-ChildItem $output_dir | % {
    Import-Certificate -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -FilePath $_.FullName  | Out-Null
}

pnpunattend auditsystem /L

#leave at PowerShell prompt
powershell

从PoSH终端,ISE或GUI手动运行时,脚本运行正常。

但是,当我在登录时启动它(通过开始菜单启动,“RunOnce”注册表项,或者甚至作为登录shell(在Winlogon中的注册表中设置),我得到以下内容:

Import-Certificate : Access is denied. (Exception from HRESULT: 0x80070005
(E_ACCESSDENIED))
At C:\Drivers\x64\installdrivers.ps1:61 char:5
+     Import-Certificate -CertStoreLocation Cert:\LocalMachine\TrustedP ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Import-Certificate], UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.CertificateServices.Commands.ImportCertificateCommand

我知道我的脚本在某种程度上以管理员身份运行,因为脚本的驱动程序部分运行良好。

我尝试在调用脚本时手动升级,但这没有区别:

$new_process = New-Object System.Diagnostics.ProcessStartInfo "PowerShell"
$new_process.Arguments = "powershell.exe $Env:HOMEDRIVE\Drivers\x64\installdrivers.ps1"
$new_process.Verb = "runas"
[System.Diagnostics.Process]::Start($new_process)

任何人都知道这里可能会发挥什么作用?

编辑:
确认certutil.exe确实有效:

certutil -Enterprise -addstore "TrustedPublisher" $_.FullName

我认为以上功能与下面的功能相同是错误的吗?

Import-Certificate -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -FilePath $_.FullName

0 个答案:

没有答案