私のアプリはサービス アカウントを偽装する必要がありますLogonUser
。ただし、.Net ライブラリ内のランダムなコンポーネントが、アカウントがアクセスできないレジストリ キーにアクセスしようとすると、エラーが発生するSecurityException
ようです。
具体的には、をロードするLinkLabel
と、IE でデフォルトのハイパーリンクの色を決定しようとしてクラッシュします。
System.Security.SecurityException: 要求されたレジストリ アクセスは許可されていません。 System.ThrowHelper.ThrowSecurityException (ExceptionResource リソース) で Microsoft.Win32.RegistryKey.OpenSubKey (文字列名、書き込み可能なブール値) で Microsoft.Win32.RegistryKey.OpenSubKey (文字列名) で System.Windows.Forms.LinkUtilities.GetIEColor (文字列名) で System.Windows.Forms.LinkUtilities.get_IELinkColor() で System.Windows.Forms.LinkLabel.get_LinkColor() で System.Windows.Forms.LinkLabel.OnPaint (PaintEventArgs e) で System.Windows.Forms.Control.PaintWithErrorHandling (PaintEventArgs e、Int16 レイヤー、ブール値の disposeEventArgs) で System.Windows.Forms.Control.WmPaint (メッセージ & m) で System.Windows.Forms.Control.WndProc (メッセージ & m) で System.Windows.Forms.Label.WndProc (メッセージ & m) で System.Windows.Forms.LinkLabel.WndProc (メッセージ & メッセージ) で System.Windows.Forms.Control.ControlNativeWindow.OnMessage (メッセージ & m) で System.Windows.Forms.Control.ControlNativeWindow.WndProc (メッセージ & m) で System.Windows.Forms.NativeWindow.Callback (IntPtr hWnd、Int32 メッセージ、IntPtr wparam、IntPtr lparam) で 失敗したアセンブリのゾーン: MyComputer
いいえ、デフォルトの色を設定しても役に立ちません。
まったく同じ問題でこのスレッドを見つけましたが、解決策がわかりません。
読み込まれたレジストリ ハイブ
LoadUserProfile
は HKU に格納され、HKCU は対話型ログオン ユーザーのハイブ (winlogon.exe によって読み込まれる) のままです。したがって、新しくロードされたハイブを取得する必要がある場合は、次のことを行う必要があります。 -に
設定 - 偽装しているユーザー アカウントの文字列 SID を使用してサブキーを開きます。Regkey
Registry.Users
これに対する回避策を知っている人はいますか?