<p>I have a problem with Lucene.NET. During an index, I receive the error 'Access to the path segments is denied'. Or sometimes 'Access to the path deletable is denied'. I eventually gave 'Everyone' full security rights to the index directory, but the problem still existed.</p>

<p>I then found out that during the index run, lucene renames the segments file to 'segments.new', and <em>then</em> this error happens. I guess some process still tries to read from the old segments file after it has been renamed? I have no clue as to why this happens, or how to fix this. Strangely enough, my co-developers can run the index on their computer without a problem.</p>

<p>The error happens at happens in Lucene.Net.Index.IndexModifier.AddDocument(Document).</p>

<p>Any ideas would be much appreciated.</p>

I suspect that your IndexModifier is in contention with a Searcher.
Here's how I use Lucene.Net in my
bug tracking
app,
BugTracker.NET
, which seems to be working ok.
I create the index at app startup.
I create a searcher and keep it around so that the index isn't reloaded with each search. All threads share the same searcher. When the searcher searches, it grabs a lock, searches, then releases the lock, so that another thread can search.  Forces the searches into single file is doable in my app because Lucene.NET is quick and a bug tracking system isn't THAT busy.
Meanwhile, I have an IndexWriter that updates the index when there is a data change. It is just changing a little bit so it does its task quick too.   When it needs to run, it grabs the same lock, destroys the searcher, updates the index, and the re-recreates the searcher.  The new searcher stays around until the next update of the index. The searcher always is working with an up-to-date index.
You can get the BugTracker.NET source and look at the files my_lucene.cs and search_text.aspx. It's all in those two files, and there isn't that much code.