レジストリを介してEdgeブラウザのホームページを変更したいのですが、暗号化されており、レジストリに(保護されています-変更するのはWindowsポリシー違反です。aka.ms/ browserpolicyを参照してください)と表示されます。レジストリでホームページを編集したり、変更するWindowsポリシーの違反箇所を見つけたりするのを手伝ってください。 aka.ms/browserpolicyを参照してください
設定するEdgeのホームページのみの場合は、以下のURLを好みに変更し、これを.regファイルとして保存します。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\Microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\Main]
"HomeButtonEnabled"=dword:00000001
"HomeButtonPage"="https://www.google.com/"
ProtectedHomepages値は実際には暗号化されていません。代わりに、ホームページの文字列とこれらの文字列の暗号化ハッシュを含む難読化されたバッファーです。バッファーは、ランダムに生成されたシードを使用して難読化されます。これは、バッファーの一部としても保存されます。私はいくつかのリバースエンジニアリング研究を行い、結果を公開しました ここ 。
したがって、基本的には、この値の読み取りと復号化は、必要な暗号化ハッシュにより、変更よりも簡単です。ただし、マルウェア対策ソフトウェアに必要なのは読み取り機能のみです。この値を変更する必要がある理由はわかりません。うまくいけば、マルウェアを作成していないことになります...
現在、Microsoft Edgeの開始ページを変更して、レジストリに文字列またはバイナリ値を書き込むことはできません。変更するエントリは「Protected-これは変更するWindowsポリシーの違反です。aka.ms/ browserpolicyを参照してください」->値「ProtectedHomepages」。値は暗号化されたバイナリ値であり、現在のホームページは読み取ることができません。特定のホームページを複数回設定する必要があり、ここでC#を使用して設定する場合は、回避策:
Microsoft EdgeブラウザーのUIを介して、必要なスタートページを設定します。変更後、ブラウザを再起動し、上記のレジストリキーをエクスポートします。エクスポートされたファイルを開き、バイナリデータをC#ソリューションの文字列定数またはリソースにコピーします。この設定を書き込む関数では、文字列をバイト配列にコピーしてから、バイナリ値としてレジストリに書き込むことができます。このエントリは、Microsoft Edgeの再起動後に有効になります。
デフォルトの検索プロバイダーを変更する場合にも使用するのと同じ方法。ただし、この場合、値 "ProtectedSearchScopes"に加えて、使用するレジストリキーがもう1つあります-> "OpenSearch"。このキーは、サードパーティの検索プロバイダーのみが存在する/存在する必要があります。検索プロバイダーがBingの場合、このキーは削除するか存在しないはずです。