アニメ『みるタイツ』ティザーPV
アニメ『みるタイツ』
よくわからんです。
もう一度関数の確認してみます。
function get_regkey($key){
reg query $key | % {
if($_ -match "HKEY"){
get_regkey $_
echo $_
}
}
}
ん~、どこがバグっているのか、おかしなところが分かりません。
PS C:\Users\takk> get_regkey "HKEY_LOCAL_MACHINE\software\microsoft\powershell" HKEY_LOCAL_MACHINE\software\microsoft\powershell\1 HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\0409 HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\PowerShellEngine HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\ShellIds HKEY_LOCAL_MACHINE\software\microsoft\powershell\1 HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\0409 HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\0409 ~省略~
でも、結果を見ると、同じレジストリキーが現れるのがおかしいですね。
そもそもreg queryの結果を再度使うことがおかしいのかも。
確認してみます。
PS C:\Users\takk> reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
Install REG_DWORD 0x1
PID REG_SZ 89383-100-0001260-04309
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\0409
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds
PS C:\Users\takk>
あっ!
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1を指定したときに、
結果に、
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1が出力されてしまってます。
過去に出現したレジストリキーの場合は除外する処理が必要ですね。
function get_regkey($arg){
function proc($key){
if($all[$key] > 0){
echo "MATCH"
return 0
}
$all[$key] = 1
reg query $key | % {
if($_ -match "HKEY"){
proc $_
echo $_
}
}
}
$all = @{}
proc $arg
}
連想配列を使って、こんな感じでよいでしょうか。
実行してみます。
PS C:\Users\takk> get_regkey "HKEY_LOCAL_MACHINE\software\microsoft\powershell" HKEY_LOCAL_MACHINE\software\microsoft\powershell\1 HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\0409 HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\PowerShellEngine HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\ShellIds HKEY_LOCAL_MACHINE\software\microsoft\powershell\1 HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\0409 HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\0409 HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\PowerShellEngine HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\PowerShellEngine HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\ShellIds\Microsoft.PowerShell HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\ShellIds\Microsoft.SqlServer.Management.PowerShell.sqlps140
同じレジストリキーが表示されたので、まだバグってますね。


コメント