「C:\ ProgramFiles」、「Users [username]」、およびSys32にファイル/フォルダーを作成する必要があるアプリケーションを作成する必要があります。また、アプリケーションはいくつかのレジストリエントリを作成する必要があります。
このアプリケーションは、Vista以降で動作する必要があります。また、Windows Server2003以降。
上記のオペレーティングシステムには、ユーザーアカウント制御(UAC)の概念があり、プログラムファイルにアクセスしてレジストリに書き込むには、管理者権限が必要です。
多くのフォーラムを調べたところ、Microsoft SDKを使用して、現在のユーザーが管理者権限を持っているかどうかを確認できることがわかりました。ただし、Vista以降のバージョンのOSでは、関数「CheckTokenMembership」が失敗します。
また、マニフェストファイルを使用して、現在のアプリケーションに管理者権限が必要であることをOSに事前に通知できるソリューションも見つけました。これは、「requestedExecutionLevel」タグを使用して行われます。
Visual Studio2005を使用してアプリケーションを作成しています。 Visual Studioでアプリケーションを作成すると、デフォルトのマニフェストファイルが作成されます。このマニフェストファイルを変更して「requestedExecutionLevel」タグを含めることで、アプリケーションを常に管理者権限で実行できますか?
ユーザー(管理者または標準)に「管理者として実行」としてアプリケーションを実行するように要求せずに、管理者権限でアプリケーションを実行する他の方法はありますか?
ありがとう!
このオプションは、プロジェクトのプロパティ[リンカー]-> [マニフェストファイル]-> [UAC実行レベル]にあります。これをrequireAdminstrator
に設定します。
これにより、デフォルトで生成されたマニフェストに必要なrequestedExecutionlevel
が含まれるため、ユーザーがまだ昇格されていない場合は、特権を昇格するように自動的に求められます。