0

私はC#Windowsサービス+UIアプリケーションを開発しています。

アンインストールプロセス中にユーザーがUIを起動しようとすると、アンインストールが破損してスタックするという問題があります(UIが一部のファイルのハンドルを保持し、それらが削除されないようにするため)。

この状況に対処するための最良の方法は何ですか?アンインストールプロセスを開始するときに.exeへのアクセスを制限して、ユーザーが.exeを起動できないようにする必要があると思いました。

しかし、私はそれを行う方法のBKMがあるかどうか疑問に思いました

編集

アプリケーションはすでにお客様のマシンにインストールされているため、アプリケーション自体に変更を加えることはできません。

アンインストールプロセスの一部として何かを実行できるアップグレードインストーラーがあります。アップグレードインストーラーは、最初にアプリケーションをアンインストールしてから、再インストールします。アップグレードインストーラーにのみコードを追加できるため、たとえばミューテックスを使用することはできません。ありがとう!

4

2 に答える 2

0

名前付きミューテックスを使用できます。これは Windows コア オブジェクトであり、2 つのプロセスで既に登録されているかどうかを確認できます。

アンインストール中に名前付きミューテックスを作成し、プロセスの開始時に存在するかどうかを確認します

名前付きミューテックスを作成する方法は次のとおりです

存在するかどうかを確認する方法は次のとおりです

于 2012-11-26T09:40:24.540 に答える
0

アンインストールでプロセスを強制終了するのはどうですか?

    public static bool KillProcess(string yourProcessName)
{
    foreach (Process clsProcess in Process.GetProcesses())
    {
        if (Process.GetCurrentProcess().Id == clsProcess.Id)
            continue;
        if (clsProcess.ProcessName.Contains(name))
        {
            clsProcess.Kill();
            return true;
        }
    }
    return false;
}
于 2012-11-26T09:43:12.147 に答える