2016-10-10 16 views
2

32ビットと64ビットをテストし、環境に応じて1つまたは2つの新しいキーを作成しようとしています。PowerShellの新しいレジストリキーとすべてのプロパティを設定する

できればタイプ、名前、値などを一度にすべて設定できればコードを単純にしたいと思います。オンラインで見ると、実行できるように見えますが、実行しようとするたびに、タイプの入力を求めるメッセージが表示されます。

援助や洞察を求めています。

それはかなり簡単なようで、ここで私が始めていますものです:

$RegLocation1 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_ALLOW_USER32_EXCEPTION_HANDLER_HARDENING\" 
$RegLocation2 = "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_ALLOW_USER32_EXCEPTION_HANDLER_HARDENING" 

If ([System.Environment]::Is32BitProcess) { 
    New-Item -Path $RegLocation1 -Force 
    New-ItemProperty -Path $RegLocation1 -Name "iexplore.exe" -Value 1 -ErrorAction SilentlyContinue -PropertyType DWord 
}Else { 
    New-Item -Path $RegLocation1 -Force 
    New-ItemProperty -Path $RegLocation1 -Name "iexplore.exe" -Value 1 -ErrorAction SilentlyContinue -PropertyType DWord 
    New-Item -Path $RegLocation2 -Force 
    New-ItemProperty -Path $RegLocation2 -Name "iexplore.exe" -Value 1 -ErrorAction SilentlyContinue -PropertyType DWord 
} 
+0

'HKEY_LOCAL_MACHINE' - >'レジストリ:: HKEY_LOCAL_MACHINE'または 'HKLM:' – PetSerAl

+0

'' [System.Environment] :: Is32BitProcess' - > '![System.Environment] :: Is64BitProcess' –

答えて

2

あなたは、現在のプロセスが32ビットまたは64ビットであるかどうかをテストしたい場合は、あなたが[System.Environment]::Is64Processをテストする必要があります。

の場合は、他の一方で、あなたはオペレーティングシステムは、32ビットまたは64ビット、あなたが[System.Environment]::Is64BitOperatingSystemをテストする必要があるかどうかにWow6432Nodeキーベースを追加します。

は、あまりにも多くのコードの重複を避けるため、アレイ内のキーのパスを保存し、テストに基づいてWow6432Node 1を追加し、ループ内でそれらを反復処理するには:

$RegLocations = @("HKLM:\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_ALLOW_USER32_EXCEPTION_HANDLER_HARDENING") 

if([System.Environment]::Is64BitProcess){ 
    $RegLocations += "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_ALLOW_USER32_EXCEPTION_HANDLER_HARDENING" 
} 

foreach($Key in $RegLocations) 
{ 
    if(-not(Test-Path $Key)){ 
     New-Item -Path $Key -Force 
    } 
    New-ItemProperty -Path $Key -Name "iexplore.exe" -Value 1 -ErrorAction SilentlyContinue -PropertyType DWord 
} 
+0

あなたのスクリプトはそれらの新しいレジストリキーが存在しなければ作成しますか? 私は64ビットのテストを見て、32ビットのテストをすべて一緒に削除するのは理にかなっていますが、新しいキーを作成するためのものはありません。 私は何が欠けていますか? わかりました。私はどこが間違っているのか分かります。 - FEATURE_ALLOW_USER32_EXCEPTION_HANDLER_HARDENINGは新しい鍵です。次に、キーの中にdwordを作成する必要があります(32ビットの場合は1)(64ビットの場合は2)、dwordの値を1に設定します。 これは役に立ちますか? ご協力いただきありがとうございます。 – HowToComputer

+0

@HowToComputerキーがすでに存在する場合は、 '-Force'スイッチのおかげで上書きされます(すべてのサブキーと既存の値を含む)。既に存在していない場合は単に作成されます - そうです、それはあなたが何を記述するのかを正確に行います –

+0

@HowToComputerキーがすでに存在するかどうかをテストする条件を追加しました –

関連する問題