![同时调用 Regsvr32 是否安全?](https://linux22.com/image/1508337/%E5%90%8C%E6%97%B6%E8%B0%83%E7%94%A8%20Regsvr32%20%E6%98%AF%E5%90%A6%E5%AE%89%E5%85%A8%EF%BC%9F.png)
我有大约 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
而且完成速度更快。