いいえ、しかし回避策があります。
UAC がオフになっていても、アプリケーションを管理者として実行できなくなるわけではありません(管理者パスワードを持っていると仮定すると、そうであるように見えます)。ご指摘のとおり、UAC を無効にrequireAdministrator
してマニフェストに設定すると、Microsoft が示すように、右クリックして選択Run as administrator
しても実際にはプロセスが昇格しません。「アプリケーションは起動する可能性がありますが、後で失敗します」
2 つのステップ:
1) Shift キーを押しながらアプリケーションを右クリックし、 を選択しますRun as a different user
。次に、管理者のユーザー名とパスワードを使用して認証を行うだけで、アプリケーションは管理者として実行されます。それは私のために働いた。

asInvoker
2)管理者権限を実行してチェックする小さな実行可能ファイルを作成します。それらなしで実行すると、ユーザーに警告し、Shift-右クリックしてからRun as a different user
. 小さなプログラムに管理者アクセス権がある場合は、 を使用ShellExecute
してプライマリrequireAdministrator
アプリケーションを呼び出します。フロー図については、こちらの図 9を参照してください。UACがオフになっているため、基本的に組み込みのUACダイアログを独自のものに置き換えています。
以下は、管理者アクセスをチェックする StackOverflow のどこかにある C++ の小さなコード サンプルです。
BOOL IsUserAdmin(VOID)
{
BOOL b;
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID AdministratorsGroup;
b = AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &AdministratorsGroup);
if(true==b)
{
if (!CheckTokenMembership( NULL, AdministratorsGroup, &b))
{
b = FALSE;
}
FreeSid(AdministratorsGroup);
}
return(b);
}