1

Visual Studio 2010win32 アプリケーションを作成しました。アプリケーションは一種のインストーラーで、exe を system32 フォルダーにコピーします。

インストーラーによってコピーされた exe は、Windows を再起動するたびに実行されます。レジストリにエントリを作成しましたが、実行するたびにそのexeを管理者として実行したいという問題があります。

exe のプロパティを変更して管理者として実行することはできますが、特定のシステムでしか機能しません。アプリケーションはインストーラーであると述べたので、すべてのシステムで権限を変更するのは非常に面倒です。

この問題を解決する方法を教えてください

4

1 に答える 1

1

まず第一に、特権と権限は実行可能ファイルではなくユーザーに対して指定されることに注意してください。

実行可能ファイルを昇格して実行するには、通常、requireAdministrator実行レベルを指定するアプリケーション マニフェストを実行可能ファイルに追加する必要があります。このようなアプリケーションは、ユーザーが管理者でない場合、または肩越しの昇格を実行する管理者が見つからない場合、実行に失敗します。

さて、これはおそらくあまり役​​に立ちません。ログオン時に昇格を行う場合 (レジストリ設定が であると仮定HKLM\Software\Microsoft\Windows\CurrentVersion\Run)、これにより、プログラムが起動するたびに UAC 昇格ダイアログがユーザーに表示されます。その振る舞いが望ましいとは思えません。

おそらく、これらすべてを回避する最もクリーンな方法は、アプリケーションをサービスとして実行するように変換することです。サービスはセッション 0 で実行され、UAC の対象ではありません。十分な権限を持つユーザー アカウントでサービスを実行するだけです。

最後にもう 1 つ強調しておきたい点があります。ファイルをsystem32にコピーしないでください。それはシステム フォルダであり、システムに属します。

于 2013-09-23T08:22:15.837 に答える