You can update the the UpdaterRegistry when a document is opened or closed via the document event handlers.
i.e. When a new document is opened you search for an element containing your parameter (SharedParameterApplicableRule) and then use the found parameter ElementID to add the trigger. Likewise when a document is closing you can remove the trigger just by supplying the document (for this you don't even need the ElementID of the parameter, just the document).
So your document opened event handler will call something similar to the below function (GetInstanceOfSharedParameter). In the below I'm first searching by the existance of a parameter by name and then using it's GUID to verify it. If it's a project parameter which isn't shared then you can't adopt this approach. I used this approach some years ago, there may be better approaches now. For some reason the SharedParameterApplicableRule uses names of shared parameters and not GUIDs (there may be more than one parameter with the same name so GUID must be checked).
In the above you need to ensure at least one such element will exist in the project. You may have to also use the document changed event as part of the process for adding triggers i.e. wait until first element is added, see what it is (unless trigger has already been added by document.opened).
Private Shared Function FilterBySharedParamExists(ParameterName As String, Optional ViewID As ElementId = Nothing) As IList(Of Element)
Dim fRule As New SharedParameterApplicableRule(ParameterName)
Dim filter As New ElementParameterFilter(fRule)
Dim collector As FilteredElementCollector = Nothing
If ViewID = Nothing Then
collector = New FilteredElementCollector(IntDoc)
Else
collector = New FilteredElementCollector(IntDoc, ViewID)
End If
collector.WhereElementIsNotElementType()
Dim Results As IList(Of Element) = collector.WherePasses(filter).ToElements()
Return Results
End Function
Private Shared Function GetInstanceOfSharedParameter(Name As String, GUID As Guid) As Parameter
Dim X As List(Of Element) = FilterBySharedParamExists(Name)
For Each item As Element In X
Dim P As Parameter = item.Parameter(GUID)
If Not P Is Nothing Then
Return P
End If
Next
Return Nothing
End Function