私はPowershellにCOM dllが登録されている場所からのパスを返す関数を持っています。関数内で正しいパスが返されますが、この関数が呼び出されたときに、いくつかのいずれかが、この奇妙な振る舞いを説明でき、出力Powershellを使用してHKCRから値を返す
function com_registeredpath()
{
param([string]$guid)
New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
$key = Get-Item "HKCR:\CLSID\$guid\InprocServer32"
$values = Get-ItemProperty $key.PSPath
[string] $defaultValue = [string] $values."(default)"
write-host ">>>: $defaultValue" # returns a value like: c:\somefolder\somefile.dll
remove-psdrive -name HKCR
return $defaultValue
}
write-host "~~~" (com_registeredpath "{00F97463-DF44-11D1-BED5-00600831F894}") # returns a value like: HKCR c:\somefolder\somefile.dll
の前に付け、余分な文字列「HKCR」はありますか?私は両方の戻り値が同じであると期待します。
おかげで、プロバイダパスを使用し、PSDriveコマンドをクレートせずに値を得ることができます! – arung