Это было тривиально.
Каждый модуль имеет __file__
переменная, которая показывает ее относительный путь от того, где Вы прямо сейчас.
Поэтому то, чтобы заставлять каталог для модуля уведомить его просто как:
os.path.dirname(__file__)
из нескольких выполненных мною тестов, это не похоже на правду.
Финализаторы в .Net - это недетерминированный. Это означает, что нет никакой гарантии , когда финализатор будет вызван. Тот факт, что объект вышел за пределы области видимости или даже был удален, не означает, что финализатор будет вызван сразу. Сборщик мусора обратится к этому в неизвестное время в будущем.
Если вам действительно нужен код для запуска, когда ваша программа Ctrl + Alt + Del'd, я не думаю, что есть другой способ, кроме как иметь отдельный программа, которая следит за состоянием первого. Если вам действительно нужна такая большая архитектура, я думаю, вы захотите использовать службу и некоторые клиентские приложения, или пару, или службы.
Однако предполагается, что вы уже изучили события приложений. Если вы этого не сделали, ознакомьтесь с этим обзором .
EDIT Лучше, чем этот обзор, вероятно, является событие ApplicationExit .