While undefining OPEN will work, you will need to re-define the command, and perhaps include error checking to restore OPEN in the event of an error. IMO - It's far better to have a separate command for this.
With the OPENR command, you can invoke from the command line like so:
(defun _OPENR (f) (_OpenReadOnly f))
(defun _OpenReadOnly (f)
;; Example (_OpenReadOnly "C:\\file.dwg")
(princ "\nOPEN READ-ONLY ")
(vl-load-com)
((lambda (acApp)
(if (/= 1 (getvar 'sdi))
(if (findfile f)
(vla-activate
(vla-open (vla-get-documents acApp) f :vlax-true))
(prompt "\n** File not found ** "))
(prompt "\n** Command not available in SDI mode ** ")))
(vlax-get-acad-object))
(princ))