I think that the reason the file was found was because after SolidWorks looked in the original location and didn't find the file, it then looked in the directory of the assembly, and failing that looked in your search paths specified in System Options>File Locations>Search Paths.
If it didn't find the file then I think it would have then asked you to either manually find or suppress the item again.
You may not need the API hear as you could just specify search paths, depending on how complex your directory structures are.
The easiest way is to make directory structures consistent across machines.
Not sure if this helps.
you have to write your own, but you can execute a find file when solidworks fires a notification of
AddHandler ISwApp.ReferenceNotFoundNotify, AddressOf Me.SldWorks_ReferenceNotFoundNotify
Function SldWorks_ReferenceNotFoundNotify(ByVal CurrentPath As String) As Integer
Dim InvalidChars() As Char = Path.GetInvalidPathChars
If IsNothing(InvalidChars) = False Then
For i = 0 To UBound(InvalidChars)
If CurrentPath.Contains(InvalidChars(i).ToString) Then
Dim InvalidFileChars() As Char = Path.GetInvalidFileNameChars
Dim FName As String = Path.GetFileName(CurrentPath)
For i = 0 To UBound(InvalidFileChars)
If FName.Contains(InvalidFileChars(i).ToString) Then
Dim FileNameOut As String = 'Execute some way of finding the file, My addin uses enterprise pdm searching to locate the files
If Len(Trim(FileNameOut)) > 0 Then
Catch ex As Exception
ISwApp.SendMsgToUser2("Error Happened at 'Sldworks_ReferenceFoundNotNotify', Notify Administrator. Error = " & ex.Message, swMessageBoxIcon_e.swMbWarning, swMessageBoxBtn_e.swMbOk)