多重起動が許可されていないアプリの多重起動を考える

多重起動抑止にはいくつか方法があって、くろねこも紹介している様なMutexを使う方法がお手軽なので一般的だと思う。(DelphiではWin32だと[Delphi] アプリケーションの多重起動を防止する (Win32)、.Netだと[Delphi] アプリケーションの多重起動を防止する(.Net)で紹介)
このMutexを利用する方法は昔のWindowsの様なシングルユーザマルチタスクの時にはそれなりに機能してきた。今でもほとんどのケースで問題無く利用できている。ひとり1アカウントで1台のパソコンを占有する為だ。
しかし、XPから実装されたユーザ切替などを利用し始めると、そのパソコンではユーザの数だけ起動出来てしまう。これはMutexが1アカウントに対して固有の識別が出来る様に仕様が再定義されたからで、アカウントに依存せずOSの制御下に1つにするのであれば、Global Mutexを使用する。(この方法でもVirtual PCなどの仮想化テクノロジを使用した場合は別。)

このように、抜け道を利用すると複数起動する方法が見えて来るのだが、例えばユーザ切替を利用すると同じ画面上に表示されないので、複数起動したメリットが得られにくかったりする。(結構切替に時間がかかる。)
そこで、「別のユーザとして実行(A)...」を利用する。
これを利用して、現在ログイン中のアカウントと別のアカウントを指定(「別のユーザとして実行」ダイアログで「別のユーザ」を選択)で多重起動抑止を回避して、複数起動出来る。※

※CPU、メモリ搭載量等の環境に依存し、同時起動出来るアプリケーション数は異なるので注意

通常、多重起動が抑止されているアプリケーションは、多重起動が不要かもしくは多重起動すると不具合を起こす可能性がある場合があるので注意
 

 

コメント (0件)


くろねこ研究所
https://www.blackcat.xyz/article.php/080304_Dual_Run_Application