You can use ObjectOverrule to achieve your goal by properly overriding the Open()/Close() methods. I posted 2 articles on ObjectOverrule a few years back: one was about how to prevent entity to be changed/modified/erased; the other was about to force entity being only changed in certain way (geometrically).
After seeing your question, I thought it would be doable with ObjectOverrule to make certain properties of an entity not changeable, while other properties changeable. I have put together some testing code completed as of now, I'll post it in my blog later (today, or tomorrow, if I can manage some time). I'll provide link to my post here once it published.
I do not know the context of your user case of when/why you want to disable geometry (or any other non-geometry property, for that matter), I'd be careful that Overrule is not overused/abused. I tend to only enable custom Overrule when a particular process/operation needs it and disable it when that process/operation is done, within an AutoCAD session.