You can use the AddInStore.Update method that takes the location of the pipeline root as a parameter instead of the one taking the PipelineStoreLocation
.
Similarly there is a AddInStore.FindAddIns overload taking the pipeline root as a parameter.
Instead of deploying your addins in Program Files you can use Program Data instead where a standard user has full access.
Have a look at the answer (from Microsoft Support) to a similar question.