50

の下のいくつかのキーを変更する微調整ユーティリティを書いていますHKEY_CLASSES_ROOT

WindowsXPなどではすべて正常に動作します。しかし、Windows7ではエラーが発生Requested registry access is not allowedします。Vistaと2008もそうだと思います。

UACサポートを追加するには、コードをどのように変更する必要がありますか?

4

7 に答える 7

63

app.manifestこのようにする必要があります:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
      <security>
         <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
         </requestedPrivileges>
      </security>
   </trustInfo>
</asmv1:assembly>
于 2009-02-18T18:54:57.597 に答える
20

管理者権限がない限り、Vista以降のバージョンのWindowsでHKCR(またはHKLM)ハイブに書き込むことはできません。したがって、ユーティリティを実行する前に管理者としてログインするか、管理者レベルが必要であることを示すマニフェストを提供するか(ユーザーに管理者ログイン情報の入力を求める)、またはそれ以外の場所での変更をやめる必要があります。 -管理者は遊んではいけません。:-)

于 2009-02-18T18:50:53.770 に答える
19

アプリ全体に管理者特権が必要ない場合、またはいくつかのまれな変更のみに必要な場合は、新しいプロセスで変更を行い、次を使用して起動できます。

Process.StartInfo.UseShellExecute = true;
Process.StartInfo.Verb = "runas";

これにより、管理者としてプロセスが実行され、レジストリで必要なことは何でも実行されますが、通常の権限でアプリに戻ります。このようにして、起動するたびにユーザーに UAC ダイアログが表示されることはありません。

于 2009-02-18T18:59:39.567 に答える
7

一時的な修正として、ユーザーはユーティリティを右クリックして [管理者として実行] を選択できます。

于 2009-02-18T18:58:48.633 に答える
2

を試していましたverb = "runas"が、レジストリ値を更新しようとすると、まだ UnauthorizedAccessException が発生していました。writeable を true に設定してサブキーを開いていないことが原因であることが判明しました。

Registry.OpenSubKey("KeyName", true);

レジストリ キーに書き込めません。UnauthorizedAccessException が発生します

于 2012-07-27T05:02:04.523 に答える
1

この問題は、アプリケーションを実行するユーザー アカウントに必要な承認を付与することに関係しています。Microsoft によって文書化されている、同様の状況と正しい解決策に対する詳細な回答を読むには、次の投稿にアクセスしてください。禁止されている/

于 2011-10-17T08:01:07.717 に答える