Here is a code I've mocked for you, it's not tested for all possible situations but will work ok.
In case that some of standard layers is locked error "On locked layer" will show.
Load it whenever standard layer names have to be used.
Code assigns reactor on paste command and after it finishes it collects all Autocad object that are outside defined layers, and place them in a layer "wrong placed". At startup it will create all layers that are inside std_layers list if they don't exist in a layer. It is a good option to have template drawing with all standard layers created with defined properties like color, line type..... In that case existing layer wont be redefined or overwritten.
(vl-load-com)
(setvar 'cmdecho 0)
(setq o_layer (getvar 'clayer))
(setq std_layers '("layer_1""layer_2" "layer_3" "wrong_placed")) ;put names of your layers here
(setq chkstr "")
(foreach str std_layers (setq chkstr (strcat chkstr str ",")))
(setq chkstr (substr chkstr 1 (-(strlen chkstr)1)))
(foreach lay std_layers(command "_.layer" "_thaw" lay "_make" lay "_color" 7 "" ""))
(setvar 'clayer o_layer)
(setvar 'cmdecho 1)
(defun c:check_layers ( / ss cnt item )
(setq ss (ssget "X" (list (cons -4 "<not")(cons 8 chkstr)(cons -4 "not>"))))
(setq cnt 0)
(repeat (sslength ss)
(setq item (ssname ss cnt))
(setq item (vlax-ename->vla-object item))
(vlax-put-property item 'layer "wrong_placed")
(vlax-release-object item)
(setq cnt(+ cnt 1))
)
(setq ss (ssget "X" '((8 . "wrong_placed"))))
(if (and ss) (alert "Some objects were placed in a layer - wrong placed!"))
(princ)
)
(defun endCommand (calling-reactor endcommandInfo / thecommandend)
(setq thecommandend (nth 0 endcommandInfo))
(if (wcmatch thecommandend "PASTECLIP")(c:check_layers))
(princ)
)
(vlr-command-reactor "test_layers" '((:vlr-commandEnded . endCommand)))
You have to replace this line with your standard layer names but leave layer "wrong_placed".
(setq std_layers '("layer_1""layer_2" "layer_3" "wrong_placed"))
After any paste operation, if there is a object placed in layer "wrong_placed" it will show an alert. You can approach to this in different ways, but I would immediately thereof replace those objects in appropriate layers so that layer "wrong placed" wont become overpopulated. To paste object correctly, open a temporary drawing, paste inside it and replace layer names before pasting it into a drawing.
I hope this will work for you. If it does, or if it needs just slight changes, select this as a SOLUTION.
Lisp file is in attachment, so just place it inside Acad trusted location.
Miljenko Hatlak

Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.