今更新したばかりのアセンブリを登録するには、regasm
を実行する必要があるClickOnceアプリケーションがあります。ClickOnceアプリケーションからShellExecute "runas"を呼び出すことはできません
UACがオフの場合、正常に動作します。ただし、UACが有効になっている場合、regsam
の終了コードは100
です。 cmdプロンプトで同じコマンドを実行すると、管理者権限が必要であるというメッセージが表示されて失敗します。私がcmdプロンプトを開いたときに[管理者として実行]オプションを使用すると、成功します。
ローカルで動作するマニフェストでasInvoker
をhighestAvailableに変更しようとしましたが、ClickOnceはそのように公開しません。私は、RegistryPermissionの必須のアクセス許可を無駄に追加しようとしました。私は設定しようとしました
ProcessStartInfo.verb = "runas"
and .UseShellExecute = True
まだ愛はありません!
私はCAS、UAC、ClickOnceについて多少の読書をしました...私はUACがClickOnceの夢と矛盾しているのを見ました。私も可能なことをしようとしているのですか?そしてもしそうなら、どうですか?
残りはちょうど厳密に関係しない背景情報、されています。凶悪な部分は、このプロジェクトは、この問題を除き、行われています!
このプロジェクトの目的は、Outlook用の「共有」AddIn(IExtensibility2
)を自動的に更新することです。私たちはVSTOをオプトアウトして以来、ネイティブのClickOnceサポートを使用することはできません。そのため、更新されたDLLをリソースとして埋め込むClickOnceアプリケーションを作成しました。起動時に実行されるため、新しいバージョンのClickOnceアプリケーションが利用可能になると、自動的にダウンロードされます。実行時に、インストールされているバージョンと埋め込まれているコピーのバージョンを比較し、埋め込みバージョンが新しいかどうかをユーザーに確認します。希望するのは、私たちが独自にロールオーバーするのではなく、ClickOnceを活用できるということでした。
セキュリティタブに「これは完全信頼アプリケーション」のラジオボタンセットがあります。 UACが無効になっている間は何でもできますが、そうでない場合は失敗するか、昇格のプロンプトが表示されません。 –
実際、それは私の悪かった、UseShellExecuteはTrueに設定されていなかった、それは問題でした。それと動詞を "runas"に設定すると、UACが呼び出されます。 –