I've used the following code for something similar.... locking all viewports.
I added the 'layer = Defpoints' and it still works fine.
There's probably a better way than what I'm doing, but hey... if it ain't broke.
Public Sub x()
Dim FilterType(0) As Integer
Dim FilterData(0) As Variant
Dim sset As AcadSelectionSet
Dim objVP As AcadPViewport
Dim x As Integer
FilterType(0) = "0"
FilterData(0) = "VIEWPORT"
Set sset = vbdPowerSet("VPUpdate")
sset.Select acSelectionSetAll, , , FilterType, FilterData
For x = 0 To sset.Count - 1
Set objVP = sset(x)
objVP.Layer = "Defpoints"
objVP.DisplayLocked = True
Next x
End Sub
Private Function vbdPowerSet(strName As String) As AcadSelectionSet
Dim objSelSet As AcadSelectionSet
Dim objSelCol As AcadSelectionSets
Set objSelCol = ThisDrawing.SelectionSets
For Each objSelSet In objSelCol
If objSelSet.Name = strName Then
objSelSet.Delete
Exit For
End If
Next
Set objSelSet = ThisDrawing.SelectionSets.Add(strName)
Set vbdPowerSet = objSelSet
End Function