I wouldn't recommend putting the data in the registry or anywhere else for that maatter because your app in a COM object may not have access to that.
The best way IMHO is to figure out a base path (like the location of the DLL) and based on that establish the startup environment. I use the DLL path for this which goes into an app directory which has related files there along with it incuding local data if used.
You can use:
THIS.cDataPath = ADDBS( JustPath(Application.Servername) )
DO PATH WITH THIS.cDataPath
DO PATH WITH\ THIS.cDataPath + "data"
etc.
+++ rick ---
>I am trying to avoid hard coding paths in several components I have built. Ideally, I would like to set a property (MyObject.CappStartpath) in the MyObject.init that would reflect the the path of the IIS application that has instantiated it. Something like "d:\Inetpub\wwwroot\webfax\", webfax being the application. The data is in a "data" subdirectory from webfax.
>
>I have figured out a two step work around when it is called from ASP but when instantiating from inside another component I'm stuck. The two step would look something like this:
>
>Set oTools = Server.CreateObject("WebClasses.HTMLTools")
>oTools.cAppStartpath = Request.ServerVariables("APPL_PHYSICAL_PATH")
>
>
>If I could pass Request.Server... Value to the INIT of the Object as it is Instantiated I could live with it. I would like for the MyOject.init to set it itself some how if possible. Any thoughts would be much appreciated.
>
>Thanks
>
>
>Scott