2

私が書いている C# アプリケーションは、組織全体で壊れたレジストリ キーを修復するものです。RegistryKey、RegistrySecurity、および RegistryAccessRule の 3 つのクラスを使用しようとしていますが、それらを使用しようとすると、「要求されたレジストリ アクセスは許可されていません。」というメッセージが表示されます。これを広範囲に検索しましたが、良い解決策が見つかりません。

修正しようとしているキーにはアクセス許可がありません (下のスクリーンショットを参照)。これらは空白で、継承可能な設定はありません。権限がないため、アプリでそれらを修正することはできませんが、regedit を開くかのように、このアプリケーションを実行するユーザーで権限を変更できます。したがって、このユーザーを使用して手動で壊れたマシンにアクセス許可を追加できることはわかっていますが、何らかの理由で、自分自身を昇格させるように強く指示しても、アプリケーションはアクセス許可を取得できません。

私が試したこと:

  1. Windows 7 では、UAC を使用してアプリケーションを実行し、右クリックして管理者として実行すると機能します。Windows XP で同じコードを使用してこれを行うことができることを複製したいと思います。
  2. レベル「highestAvailable」を使用してマニフェストを作成し、「requireAdministrator」も試しました。
  3. また、「System.Security.Permissions.RegistryPermission」アサートを使用してみました。これにより、より高いレベルのアクセス許可も実行できるようになります。
  4. これをネットワーク共有から実行していませんが、ローカルとネットワークの両方を試して、どのセキュリティゾーンから実行するかを確認しました.

パーミッションが以下のように見えることがわかります: http://i.stack.imgur.com/0c99s.jpg

どんな助けでも大歓迎です!

4

1 に答える 1

0

この人物がアカウント偽装クラスを作成するために行ったように、P/Invoke を使用して必要な API を呼び出すことで、コード内から管理者アカウントの偽装を試すことができます。

なりすましクラス c#

于 2012-09-18T22:31:05.820 に答える