Create a semaphore and specify access rights to everyone?

S

Samuel R. Neff

I'm having trouble creating a Semaphore with read-access rights for
everyone. Originally I was trying to use this code:

semaphore = new Semaphore(maxLocks, maxLocks, "RwLock#" + name);

but when using that code to create a Semaphore instance for an
existing system semaphore (i.e., the second time the code gets hit), I
get an UnauthorizedAccessException. So I tried specifying that
everyone has read rights:


var sec = new SemaphoreSecurity();
sec.AddAccessRule(new SemaphoreAccessRule("Everyone",
SemaphoreRights.ReadPermissions, AccessControlType.Allow));

bool createdNew;

semaphore = new Semaphore(maxLocks, maxLocks, "RwLock#" + name, out
createdNew, sec);


But I still get the same error.

The error occurs when running unit tests and happens even when
creating the Semaphore twice in the same process with the same user.
I'm only creating the Semaphore in .NET from this one application.

The full error is

System.UnauthorizedAccessException: Access to the port is denied.
at System.IO.Ports.InternalResources.WinIOError(Int32 errorCode,
String str)
at System.Threading.Semaphore..ctor(Int32 initialCount, Int32
maximumCount, String name, ref Boolean createdNew, SemaphoreSecurity
semaphoreSecurity)
at Common.InterProcessReaderWriterLock..ctor(String name, Int32
maxLocks) in InterProcessReaderWriterLock.cs: line 39

Any help would be appreciated.

Thanks,

Sam
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top