これをテストできる Windows 8 のインストールはありませんが、Click Once 展開 (マニフェストの使用が許可されていない場所) で管理者権限を要求すると、同様の問題が発生しました。
アプリケーションが管理者として実行されているかどうかを起動時にチェックすることで解決しました。管理者として実行されていない場合は、管理者として再起動します。
これが私が使用するコード(わずかに変更された)です:
public static bool IsRunningAsAdministrator()
{
var wi = WindowsIdentity.GetCurrent();
var wp = new WindowsPrincipal(wi);
return wp.IsInRole(WindowsBuiltInRole.Administrator);
}
public static void StartAsAdmin(StartupEventArgs e)
{
if (IsRunningAsAdministrator())
return;
// It is not possible to launch a ClickOnce app as administrator directly, so instead we launch the app as administrator in a new process.
var processInfo = new ProcessStartInfo(Assembly.GetEntryAssembly().CodeBase);
// The following properties run the new process as administrator
processInfo.UseShellExecute = true;
processInfo.Verb = "runas";
// Start the new process
Process.Start(processInfo);
// Shut down the current process
Application.Current.Shutdown();
}
多くのマシンでテストした後の更新:このソリューションで遭遇した問題の 1 つは、ウイルス対策ソフトウェアがこれを疑わしい動作と見なし、起動をブロックすることが多いことです。
最終的に、インストーラー + 自動更新を Click Once からWiX Toolset + NAppUpdateに変更し、代わりに実行しrequestedExecutionLevel="requireAdministrator"
ました。