同时调用 Regsvr32 是否安全?

同时调用 Regsvr32 是否安全?

我有大约 100 个 dll 需要注册regsvr32 /s some.dll,我是否需要等待每次调用regsvr32完成后再进行下一次调用,或者我可以同时运行它们吗?

基本上我有 Powershell 脚本

if([System.Environment]::Is64BitOperatingSystem)
{
    $regsvr = [System.Environment]::ExpandEnvironmentVariables('%windir%\SysWOW64\regsvr32.exe')
}
else
{
    $regsvr = [System.Environment]::ExpandEnvironmentVariables('%windir%\System32\regsvr32.exe')
}

foreach( $file in $filesToRegister)
{   
    Write-Verbose "$regsvr /s ""$file"""
    Start-Process $regsvr -ArgumentList '/s', """$file""" -Wait
}

所有正在注册的文件都是由大型项目生成的 vb6 dll 文件。我需要将其保留-Wait在我的计算机上吗Start-Process?还是可以安全地将其删除?

答案1

经过一番尝试,我发现regsvr32可以一次传递多个文件。切换$filesToRegister到使用相对路径来降低参数列表的总长度,我现在可以

if([System.Environment]::Is64BitOperatingSystem)
{
    $regsvr = [System.Environment]::ExpandEnvironmentVariables('%windir%\SysWOW64\regsvr32.exe')
}
else
{
    $regsvr = [System.Environment]::ExpandEnvironmentVariables('%windir%\System32\regsvr32.exe')
}

Set-Location $currentBuildFolder
$arguments = @('/s') + $filesToRegister
Write-Verbose "$regsvr $arguments"
Start-Process $regsvr -ArgumentList $arguments -Wait

而且完成速度更快。

相关内容