I don't think so, no, named semaphores can be used for inter-process
communication on the same box but not across machines.
It's not recommended (for obvious reasons) but you can do a quick & dirty
lock with the file system using File.Open(<name>, FileMode.CreateNew); This
succeeds if the file doesn't exist, throws an IOException if it does. The
first machine to create the file "owns" the lock. On failure you need to
poll. The owner deletes the file when done with the critical section. Since
this isn't a true blocking lock and "blocked" processes aren't on a system
queue there is a potential for starvation if multiple machines are trying to
access the shared resource too frequently.
Better is to use some form of IPC (e.g. .NET Remoting) and establish one
machine as the resource master. All other machines make Remoting calls into
the master to obtain access to the shared resource. The master should use a
separate thread for each caller and can then block callers by waiting on an
internal semaphore that controls access to the resource.
-- TB