I would suggest introducing a Gateway into your system. The Gateway would be a single application (or part of one of your existing applications: the winforms app or the web app) that acts as the intermediary to the DB for both the windows app and the web app. This way, you only have one point of failure between db requests and the db itself. Design that Gateway to manage concurrency and then you dont have to worry about other processes writing to your db.
If i was in your position i might select the web app to be the gateway. Create a set of services/repositories to interface with the db and have the UI layer of the web app access those services. Then expose those services via web services (or WCF services) to your windows app for it to access the db instead of it accessing the db directly. This way you have decoupled your system and created a single point of entry to the data store. You'll probably solve a whole lot more problems other than concurrency with this approach.