Tak da się. Zainteresowałem się tym tematem przy okazji Job-a, w którym chciałem mieć dostęp do bieżącego katalogu aplikacji. Oczywiście sposobów jest znów 100 w tym zahardcodowanie ścieżki do katalogu ROOT aplikacji, ale nie w tym rzecz. Aby nie wyważac otwartych drzwi korzystamy z właściwości applicationContextSchedulerContextKey klasy Spring.Scheduling.Quartz.SchedulerFactoryObject. Nie wiem czy jest tak domyślnie ale ja nadałem tej właściwości wartość applicationContext, a definicja obiektu wygląda tak:

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net" xmlns:aop="http://www.springframework.net/aop" xmlns:tx="http://www.springframework.net/tx">
  <object type="Spring.Scheduling.Quartz.SchedulerFactoryObject, Spring.Scheduling.Quartz">
     <property name="applicationContextSchedulerContextKey" value="applicationContext"/>
    <property name="triggers">
      <list>
      </list>
    </property>
  </object>
</objects>


Teraz w klasie job-a w metodzie ExecuteInternal mogę dostać się bezpośrednio do contextu aplikacji a dalej droga do głównego katalogu już krótka...

using System;
using Spring.Scheduling.Quartz;
using System.IO;
using Spring.Context;
using Spring.Objects.Factory;
using Spring.Util;

namespace Fraud.Quartz.job {
 public class ClearDirectoryJob: QuartzJobObject, IInitializingObject {
  private String dirPath;

  public String DirPath {
   get {
    return dirPath;
   }
   set {
    dirPath = value;
   }
  }

  protected override void ExecuteInternal(global::Quartz.JobExecutionContext context) {
   // pobieram więc context aplikacji
   IApplicationContext appContext = (IApplicationContext) context.Scheduler.Context["applicationContext"];
   /* i przez GetResource dobieram się do dowolnego folderu
   w moim wypadku dirPath ma wartość file://~/tmp
   */
   String fullPath = appContext.GetResource(dirPath).File.FullName;
   /* ............ */
  }

  public void AfterPropertiesSet() {
   AssertUtils.ArgumentHasText(dirPath, "dirPath");
  }
 }
}