If you want to open a drawing (e.g. in LISP or in script) in a forced read-only (R/O) mode, you can use the following VLISP code:
(vl-load-com)
(defun openRO (fn)
(vla-activate (vla-open (vla-get-documents (vlax-get-acad-object)) fn :VLAX-TRUE))
)
Then you can use e.g.:(openRO "C:\\documents\\mydrawing.dwg")
or
(openRO (getfiled "Open R/O" "" "DWG" 0))
to open the drawing in ReadOnly mode (write-protected).
You can then also redefine the OPEN command to open all DWG files as read-only:
_UNDEFINE _OPEN
(defun C:OPEN()(openRO (getfiled "Open R/O" "" "DWG" 0))(princ))
and define a new command - "OPENEDIT" - to perform a "real" open:
(defun C:OPENEDIT()(command "._OPEN)(princ))