2

Windowsフォームアプリケーション内に更新ボタンがあります。ユーザーが更新ボタンをクリックすると、アプリケーションはアプリケーションの現在のバージョンと、Webサービスから取得したサーバーで利用可能なバージョンをチェックします。バージョン間に不一致がある場合、アプリケーションは Web サービスから取得したパスから新しいバージョンをダウンロードします。

現在、同じソリューション内で 2 つのプロジェクトを使用しています

  1. アプリケーションが実行されているメイン プロジェクト

  2. プロジェクトの更新 - その目的は、.exe ファイルを削除し、新しい .exe ファイルをダウンロードするために使用されます。(更新プロジェクトはメインプロジェクトの参照として追加されます)

問題は、更新プロジェクトのコードを使用して mainproject.exe を削除しようとすると、「未承認の例外がキャッチされました」という例外が表示されることです。なぜこれが起こっているのか誰か知っていますか?または、アプリケーション内で更新機能を使用する方が良いアイデアはありますか??

これは、ファイルの削除に使用しているコードです。

Windows フォームでの無許可の例外 - C#

編集:-

アプリケーションのデバッグ中に.exeファイルを削除できましたが、デスクトップにインストールした後にアプリケーションを削除しようとすると、再び「アクセスが拒否されました」という例外メッセージが表示されます。

4

3 に答える 3

4

更新ボタンでは、別の小さなアプリを別のプロセスとして開始します。小さなアプリでは、次のコードを使用してプロセスを強制終了し、元のアプリを削除できます。

try
{
    Process [] proc Process.GetProcessesByName("YourAppName");
    proc[0].Kill();
}
于 2013-08-20T02:43:42.410 に答える
3

アプリケーションで「アクセスが拒否されました」という例外が発生する理由の解決策を見つけました。

コードを使用してアプリケーション内のファイルを削除しているため、「管理者」の権限が必要です。

1 つの方法は、ユーザーを管理者として手動でログインさせることですが、これはより良いオプションではありません。

もう 1 つの方法は、プロジェクト内にアプリ マニフェスト ファイルを作成し、レベルを「管理者」に設定することです。

アプリ マニフェストの作成 -> プロジェクトを右クリック -> 新しい項目の追加 -> 右側のペインから [アプリ マニフェスト] オプションを選択 -> [OK] をクリック

マニフェスト ファイルを開き、レベルを「requireAdministartor」に変更します。

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

これにより、アプリケーションの実行中に問題が解決され、ユーザーは管理者として実行するように求められます。

これが将来誰かに役立つことを願っています。:) ご支援いただきありがとうございます。

于 2013-08-21T01:11:59.330 に答える
2

アプリケーションが実行されているため、実行可能ファイルを削除できませんか? その場合、実行中の実行可能ファイルの名前を変更し、新しいバージョンをその場所に配置できます。次にアプリケーションを起動したときに、新しいバージョンが実行されます。

于 2013-08-20T01:57:14.083 に答える