Something like this might work. The DOS attrib command won't understand $desktop, so the second example uses convertFilePath to fix it up. It is also adding quotation marks in case you have spaces in your paths.
// make read only: attrib.exe +R <Path>
txt = Run Program(executable("attrib.exe"), options({"+R","\!""||FILENAME||"\!""}), readfunction("text"));
// make NOT read only: attrib.exe -R <Path>
txt = Run Program(executable("attrib.exe"),options({"-R","\!""||convertfilepath( FILENAME ,windows)||"\!""}),readfunction("text"));
The FileSnapper add-in uses this to make the snapshot files read only. I think it will work for .JMP tables too.
All of this assumes your users are on your team and not trying to break this solution. If they have r/w access to the file, they can change the attribute too. Then you'd need a server where you have write permission and they do not. If your shared folder is on your machine, you can probably set the permissions easier than using the attrib command. The permissions won't protect you from yourself--if you leave an instance of JMP running with the file open (not read only), the scheduled instance of JMP on the same machine/user will not have exclusive access. You might do both if it is critical.
Craige