私のプログラムのインスタンスが1つだけ同時に実行されていることを確認する必要があります。いくつかの検索の後、私はthis SO questionを見つけ、this answerの指示に従った。私はすべてが大丈夫ですし、それが終了への復帰を待って初めてのバイナリを実行すると名前付きミューテックスは、同時に異なるユーザーとして実行されたときにTypeInitializationExceptionをスローします
using System;
using System.Threading;
namespace Test
{
class Program
{
static Mutex mutex = new Mutex(true, "{8F6F0AC4-B9A1-45fd-A8CF-72F04E6BDE8F}");
static void Main(string[] args)
{
if (mutex.WaitOne(TimeSpan.Zero, true))
{
Console.ReadLine();
mutex.ReleaseMutex();
}
else
{
Console.WriteLine("Only one instance allowed");
Console.ReadLine();
}
}
}
}
:私は小さなテストアプリケーションを作成しました。 2回目にアプリケーションを起動すると、「1つのインスタンスのみが許可されました」と表示されます。これまでのところすべてが期待通りに機能します。しかし、別のユーザー(RunAsまたはユーザーの切り替えによって)でアプリケーションを起動すると、TypeInitializationExceptionがスローされます。どうして?誰にもこれに対する解決策がありますか?
のInnerException: System.UnauthorizedAccessException - >パスへのアクセスは、 "{8F6F0AC4-B9A1-45fd-A8CF-72F04E6BDE8F}" 拒否されます。
追加のInnerException情報で私の質問を更新しました。 – McKembley
ああ、私は正しいと思うときにそれが好きです。 Mutex.SetAccessControl()。 –