2

このエラーが発生します

''System.Security.SecurityException: Requested registry access is not allowed.
   at System.ThrowHelper.ThrowSecurityException(ExceptionResource resource)''

レジストリにキーを追加しようとすると。アプリケーションの requestedExecutionLevel は「requireAdministrator」であることに言及します。ClickOnce のセキュリティ設定を有効にして、requestedExecutionLevel を "asinvoker" のままにしておく方がよいでしょうか?

これは、VB.NET コードの構造です。

Try
[my code]
Catch sec As Security.SecurityException
         [another block of code]
Catch ex As Exception
         [another block of code]
End Try

「on error resume next」ステートメントを使用することをお勧めしますか? このエラーが発生する理由を教えてください。

VB.NET、Visual Studio 2008 (Vista Ultimate x86 と Windows 7 Ultimate x64 でエラーが発生し、管理者アカウントでログインしました)

4

1 に答える 1

0

ユーザー アカウント制御 (UAC) では、アプリケーションを昇格させるために管理者グループ アカウントも必要です。その昇格は、UAC ダイアログをコミットすることにより、アプリケーションの開始時にユーザーによって付与される必要があります。

したがって、 app.manifest を使用して編集する必要があります

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

アプリケーションが起動するたびに UAC をトリガーしたくない場合は、別の実行可能ファイルへの昇格を必要とする操作を外部委託し、昇格されていないプロセスから呼び出すことができます。

Dim elevatedProc As New Process
elevatedProc.FileName= "elevated.exe"
Try
elevatedProc.Start()
Catch ex As System.ComponentModel.Win32Exception
 MsgBox("Please commit UAC dialog")
End Try

UAC ダイアログがユーザーによってコミットされなかった場合、System.ComponentModel.Win32Exception がスローされます。

または、システム アカウントで実行されているサービス内で自分のものを実行することもできます。これは、UAC をまったくトリガーしません。

于 2012-12-20T23:59:39.343 に答える