There are a number of ways you can do this:
1. You could simply set the field to "prohibit modification of value during data entry" (see screenshot). This will prevent any manual change to the field contents, but scripted entry or modification will still work. To avoid users getting a dialog box come up if they try to change it you can set the field to not allow entry in Browse mode, so they can't even click into it.
2. You could do just the last part (ie. not allow entry in Browse mode) for any instances of the field which users will have access to.
3. You could create a script with the following steps:
Set Error Capture [ On ]
Exit Script [ Result: False ]
and set an OnObjectKeystroke script trigger on any instance of the field to which users have access, so that any keystroke will simply jump the cursor out of the field.
Keep in mind that method 1 will prevent manual change to the field anywhere it appears; methods 2 and 3 will only work on field instances that are thus set.