2012-02-29 11 views
2

今更新したばかりのアセンブリを登録するには、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を活用できるということでした。

答えて

1

サンドボックスされた特権以上のものが必要な場合は、フルトラストアプリを選択することをお勧めします。 .Net 4.0では、すべてのCASは推奨されなくなりました。 .Net 4.0のfulltrust click onceアプリは、ほとんど何でもできます。

+0

セキュリティタブに「これは完全信頼アプリケーション」のラジオボタンセットがあります。 UACが無効になっている間は何でもできますが、そうでない場合は失敗するか、昇格のプロンプトが表示されません。 –

+1

実際、それは私の悪かった、UseShellExecuteはTrueに設定されていなかった、それは問題でした。それと動詞を "runas"に設定すると、UACが呼び出されます。 –