96 lines
2.4 KiB
PowerShell
96 lines
2.4 KiB
PowerShell
param (
|
|
[parameter(Mandatory=$true)]
|
|
[string]
|
|
$templateFileName,
|
|
|
|
[parameter(Mandatory=$false)]
|
|
[string]
|
|
$outputFileName,
|
|
|
|
[parameter(Mandatory=$false)]
|
|
[string]
|
|
$registryHive = 'HKEY_LOCAL_MACHINE',
|
|
|
|
[parameter(Mandatory=$false)]
|
|
[string]
|
|
$comServerDirectory,
|
|
|
|
[parameter(Mandatory=$false)]
|
|
[string]
|
|
$comServerFileName
|
|
)
|
|
|
|
if (!$outputFileName) {
|
|
if ($templateFileName.EndsWith('.template') {
|
|
$outputFileName = $templateFileName.Substring(0, $templateFileName.Length - 9)
|
|
} else {
|
|
$outputFileName = 'out.reg'
|
|
}
|
|
}
|
|
|
|
|
|
function DoRegAction {
|
|
param(
|
|
# [parameter(Mandatory=$true)]
|
|
# [String]
|
|
# $regExe,
|
|
|
|
# [parameter(Mandatory=$true)]
|
|
# [String]
|
|
# $action,
|
|
|
|
[parameter(Mandatory=$true)]
|
|
[String]
|
|
$path
|
|
)
|
|
|
|
$regExe32 = "$($env:SystemRoot)\system32\reg.exe"
|
|
$regExe64 = "$($env:SystemRoot)\syswow64\reg.exe"
|
|
if (Test-Path $regExe64) {
|
|
$command = $regExe64
|
|
} else {
|
|
$command = $regExe32
|
|
}
|
|
|
|
#$arguments = @($action, $path)
|
|
$arguments = New-Object System.Collections.Generic.List[System.Object]
|
|
$arguments.Add($action)
|
|
$arguments.Add($path)
|
|
switch ($action) {
|
|
# 'add' {
|
|
# }
|
|
'delete' {
|
|
$arguments.Add('/f')
|
|
}
|
|
default { # query
|
|
$arguments.Add('/s')
|
|
$errorMsg = "Missing key: $path"
|
|
}
|
|
}
|
|
|
|
if ($errorMsg) {
|
|
try {
|
|
& "$command" $arguments
|
|
} catch {
|
|
Write-Error $errorMsg
|
|
}
|
|
} else {
|
|
& "$command" $arguments
|
|
}
|
|
}
|
|
|
|
# Write-Host "=-=-=-=-= DEBUG =-=-=-=-= type: $type"
|
|
# Write-Host "=-=-=-=-= DEBUG =-=-=-=-= action: $action"
|
|
# Write-Host "=-=-=-=-= DEBUG =-=-=-=-= registryHive: $registryHive"
|
|
# Write-Host "=-=-=-=-= DEBUG =-=-=-=-= clsid: $clsid"
|
|
# Write-Host "=-=-=-=-= DEBUG =-=-=-=-= interfaceId: $interfaceId"
|
|
# Write-Host "=-=-=-=-= DEBUG =-=-=-=-= eventInterfaceId: $eventInterfaceId"
|
|
# Write-Host "=-=-=-=-= DEBUG =-=-=-=-= libId: $libId"
|
|
# Write-Host "=-=-=-=-= DEBUG =-=-=-=-= className: $className"
|
|
DoRegAction "$registryHive\Software\Classes\CLSID\{$clsid}"
|
|
DoRegAction "$registryHive\Software\Classes\Interface\{$interfaceId}"
|
|
DoRegAction "$registryHive\Software\Classes\Interface\{$eventInterfaceId}"
|
|
DoRegAction "$registryHive\Software\Classes\$ClassName"
|
|
DoRegAction "$registryHive\Software\Classes\$ClassName.1"
|
|
DoRegAction "$registryHive\Software\Classes\TypeLib\{$libId}"
|