framework и переменые окружения
От: lumf  
Дата: 18.09.06 12:45
Оценка:
привет всем


суть проблемы:
есть .net приложение ---клиент базы данных oracle

до этого я поставил ораклового клиента и в переменных окружения дописал путь к нему


запускаю свою программу, вылетает исключение: не могу подгрузить oci.dll

смотрю filemonom---пытается искать эту dll во все переменных окружения кроме только что созданной.


перегружаю комп, запускаю программу----все ок, oci.dll нашлась.




вопрос: что сделать чтобы framework увидел новую переменную без перегрузки компа?
Сиськи и процессоры
Re: framework и переменые окружения
От: Аноним  
Дата: 18.09.06 13:10
Оценка:
Комп грузить не надо, достаточно перегрузить приложение. Хуже если там драйвер, тогда придется перестартовать его.
Re[2]: framework и переменые окружения
От: lumf  
Дата: 18.09.06 13:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Комп грузить не надо, достаточно перегрузить приложение. Хуже если там драйвер, тогда придется перестартовать его.


если бы можно было просто перестарторвать приложение, то все бы уже было давно решено...
Сиськи и процессоры
Re[3]: framework и переменые окружения
От: MatFiz Россия  
Дата: 18.09.06 14:36
Оценка:
Здравствуйте, lumf, Вы писали:

L>если бы можно было просто перестарторвать приложение, то все бы уже было давно решено...


То приложение, из которого ты запускаешь свое приложение, почти наверняка тоже надо рестартануть
How are YOU doin'?
Re[3]: framework и переменые окружения
От: akasoft Россия  
Дата: 18.09.06 15:38
Оценка:
Здравствуйте, lumf, Вы писали:

L>если бы можно было просто перестарторвать приложение, то все бы уже было давно решено...


Тем не менее, это правильный подход. Возможно, твое приложение на завершило работу, либо инсталлятор не задал нужные переменные окружения сразу, а только после перезапуска. Инсталляторы бывают очень хитрыми.

При запуске приложения ещё со времён DOS оно получает копию переменных окружения, которые действуют до окончания работы приложения. Сам понимаешь, что будет, если менять во время работы. Но в Windows и это возможно, есть уведомление ОС об изменении переменных окружения. Дальше дело программы, как на это реагировать.
... << RSDN@Home 1.2.0 alpha rev. 655>> SQL Express 2005
Re[4]: framework и переменые окружения
От: lumf  
Дата: 18.09.06 15:58
Оценка:
Здравствуйте, akasoft, Вы писали:

A>Здравствуйте, lumf, Вы писали:


L>>если бы можно было просто перестарторвать приложение, то все бы уже было давно решено...


A>Тем не менее, это правильный подход.



возможно так и есть! я же не спорю... НО, тем не менее внимательно посмотрите на то что происходит у меня...

у меня windows service.... я его останавливаю, запускаю.... переменные те же, не обновились...

а вот если я перегружаюсь, то переменные уже новые...

где логика?
Сиськи и процессоры
Re[5]: framework и переменые окружения
От: akasoft Россия  
Дата: 18.09.06 16:43
Оценка:
Здравствуйте, lumf, Вы писали:

L>у меня windows service.... я его останавливаю, запускаю.... переменные те же, не обновились...


Ты не написал про это в исходном сообщении, у служб другое поведение, определяемое system account.

L>а вот если я перегружаюсь, то переменные уже новые...


Возможно, переменные окружения для system account задаются одноразово, надо МСДН смотреть. Ты точно останавливаешь службу, а не ставишь на паузу?

Обрати внимание на то, что есть переменные окружения пользователя, а есть системные. Пользовательские видны только конкретному пользователю.
... << RSDN@Home 1.2.0 alpha rev. 655>> SQL Express 2005
Re[6]: framework и переменые окружения
От: lumf  
Дата: 18.09.06 17:00
Оценка:
Здравствуйте, akasoft, Вы писали:

A>Здравствуйте, lumf, Вы писали:




A>Ты не написал про это в исходном сообщении, у служб другое поведение, определяемое system account.


L>>а вот если я перегружаюсь, то переменные уже новые...


A>Ты точно останавливаешь службу, а не ставишь на паузу?


точно

A>Обрати внимание на то, что есть переменные окружения пользователя, а есть системные. Пользовательские видны только конкретному пользователю.



сервис стартует как local system


про то что переменные бывают разные знаю... добавляю через мой компьютер--->свойства----->дополнительно--->переменные среды--->нижнее окошко
Сиськи и процессоры
Re: framework и переменые окружения
От: dimchick Украина  
Дата: 18.09.06 17:51
Оценка:
Здравствуйте, lumf, Вы писали:

L>привет всем



L>суть проблемы:

L>есть .net приложение ---клиент базы данных oracle

L>до этого я поставил ораклового клиента и в переменных окружения дописал путь к нему



L>запускаю свою программу, вылетает исключение: не могу подгрузить oci.dll


L>смотрю filemonom---пытается искать эту dll во все переменных окружения кроме только что созданной.



L>перегружаю комп, запускаю программу----все ок, oci.dll нашлась.





L>вопрос: что сделать чтобы framework увидел новую переменную без перегрузки компа?


Скорее всего SCM (Service Control Manager) необновил свои переменные окружения.
И скорее всего это переменная PATH. Как вариант попробуй во время запуска считывать переменные окружения:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment
Re[2]: framework и переменые окружения
От: dimchick Украина  
Дата: 18.09.06 17:53
Оценка:
Здравствуйте, dimchick, Вы писали:

D>Здравствуйте, lumf, Вы писали:


L>>привет всем



L>>суть проблемы:

L>>есть .net приложение ---клиент базы данных oracle

L>>до этого я поставил ораклового клиента и в переменных окружения дописал путь к нему



L>>запускаю свою программу, вылетает исключение: не могу подгрузить oci.dll


L>>смотрю filemonom---пытается искать эту dll во все переменных окружения кроме только что созданной.



L>>перегружаю комп, запускаю программу----все ок, oci.dll нашлась.





L>>вопрос: что сделать чтобы framework увидел новую переменную без перегрузки компа?


D>Скорее всего SCM (Service Control Manager) необновил свои переменные окружения.

D>И скорее всего это переменная PATH. Как вариант попробуй во время запуска считывать переменные окружения:
D>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment
и еще тут
HKEY_CURRENT_USER\Environment
Re[7]: framework и переменые окружения
От: akasoft Россия  
Дата: 18.09.06 18:25
Оценка:
Здравствуйте, lumf, Вы писали:

L>точно


Из окна менеждера служб?

Попробуй из командной строки:

net stop MyServiceName
rem change PATH and others
net start MyServiceName
... << RSDN@Home 1.2.0 alpha rev. 655>> SQL Express 2005
Re[2]: framework и переменые окружения
От: lumf  
Дата: 18.09.06 21:53
Оценка:
Здравствуйте, dimchick, Вы писали:


D>Скорее всего SCM (Service Control Manager) необновил свои переменные окружения.


возможно....
надо попробовать.

D>И скорее всего это переменная PATH. Как вариант попробуй во время запуска считывать переменные окружения:


именно path

D>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment



читать руками сам ничего не хочу.... не в том задача... нужно чтобы oracleclient сам обратился туда и подцепил oci.dll
Сиськи и процессоры
Re[3]: framework и переменые окружения
От: lumf  
Дата: 19.09.06 07:46
Оценка:
короче ничего меня не спасло кроме перезагрузки... Вот теперь все же интересно чей это косяк?

После того как я изменяю переменную окружения, все записи в реестре обновлются, в командной сроке изменения видны.


а вот при старте сервиса смотрю filemonom---> ищет dll везде кроме вновь прописанного пути.

кто, откуда и в какой момент читает значение переменной path?
Сиськи и процессоры
Re: framework и переменые окружения
От: Аноним  
Дата: 19.09.06 07:55
Оценка:
L>суть проблемы:
L>есть .net приложение ---клиент базы данных oracle

L>до этого я поставил ораклового клиента и в переменных окружения дописал путь к нему



L>запускаю свою программу, вылетает исключение: не могу подгрузить oci.dll


L>смотрю filemonom---пытается искать эту dll во все переменных окружения кроме только что созданной.



L>перегружаю комп, запускаю программу----все ок, oci.dll нашлась.





L>вопрос: что сделать чтобы framework увидел новую переменную без перегрузки компа?




А может это Framework не перестартовывается — ну, типа он разделяемый между несколькими приложениями или что-нибудь подобное. Под .NET кто-то обещал, что твоя программа будет отдельным процессом ОС?
Re[2]: framework и переменые окружения
От: lumf  
Дата: 19.09.06 08:15
Оценка:
А>А может это Framework не перестартовывается — ну, типа он разделяемый между несколькими приложениями или что-нибудь подобное. Под .NET кто-то обещал, что твоя программа будет отдельным процессом ОС?


тоже об этом подумал... но как это реально проверить?
Сиськи и процессоры
Re[3]: framework и переменые окружения
От: dimchick Украина  
Дата: 19.09.06 11:54
Оценка:
Здравствуйте, lumf, Вы писали:

L>Здравствуйте, dimchick, Вы писали:



D>>Скорее всего SCM (Service Control Manager) необновил свои переменные окружения.


L>возможно....

L>надо попробовать.

D>>И скорее всего это переменная PATH. Как вариант попробуй во время запуска считывать переменные окружения:


L>именно path


D>>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment



L>читать руками сам ничего не хочу.... не в том задача... нужно чтобы oracleclient сам обратился туда и подцепил oci.dll


тогда брось oci.dll в system32 или под ноги exe
надо попробовать еще после изменения реестра послать броадкастом WM_SETTINGCHANGE. может SCM подхватит.
Re[4]: framework и переменые окружения
От: lumf  
Дата: 19.09.06 12:20
Оценка:
Здравствуйте, dimchick, Вы писали:

D>Здравствуйте, lumf, Вы писали:


L>>Здравствуйте, dimchick, Вы писали:



D>>>Скорее всего SCM (Service Control Manager) необновил свои переменные окружения.


L>>возможно....

L>>надо попробовать.

D>>>И скорее всего это переменная PATH. Как вариант попробуй во время запуска считывать переменные окружения:


L>>именно path


D>>>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment



L>>читать руками сам ничего не хочу.... не в том задача... нужно чтобы oracleclient сам обратился туда и подцепил oci.dll


D>тогда брось oci.dll в system32 или под ноги exe


не спортивно, так как клиент оракла это не только oci.dll

D>надо попробовать еще после изменения реестра послать броадкастом WM_SETTINGCHANGE. может SCM подхватит.


надо бы какое-нить "правильное" решение. админское
Сиськи и процессоры
Re[5]: framework и переменые окружения
От: dimchick Украина  
Дата: 19.09.06 13:40
Оценка:
Здравствуйте, lumf, Вы писали:

L>надо бы какое-нить "правильное" решение. админское


предлагаю устроить конкурс на учший способ решения проблемы:
вот 3 варианта

— програмерсоке — послать WM_SETTINGCHANGE
— админское — нажать кнопку reset
— хацкерсоке — кинуть dll в system32/exe folder
Re[4]: framework и переменые окружения
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 19.09.06 13:46
Оценка: 1 (1)
Здравствуйте, MatFiz, Вы писали:

L>>если бы можно было просто перестарторвать приложение, то все бы уже было давно решено...

MF>То приложение, из которого ты запускаешь свое приложение, почти наверняка тоже надо рестартануть

вот именно
Автор: Игорь Вартанов
Дата: 15.12.01
... << RSDN@Home 1.2.0 alpha rev. 654>>
Re[5]: framework и переменые окружения
От: lumf  
Дата: 19.09.06 14:55
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, MatFiz, Вы писали:


L>>>если бы можно было просто перестарторвать приложение, то все бы уже было давно решено...

MF>>То приложение, из которого ты запускаешь свое приложение, почти наверняка тоже надо рестартануть

OE>вот именно
Автор: Игорь Вартанов
Дата: 15.12.01


там ниписано

Итак, командная строка ни при чем. 

Нужно получить имя процесса, породившего процесс твоего экзешника. 
Если это не %SystemRoot%\system32\services.exe (WinNT 4.0, для W2k подскажет Alex Fedotov, я сам не помню), 
то мы работаем в user mode. Если же родитель процесса — services.exe (AKA SCM), то мы работаем в режиме сервиса. 
В системе сервисы запускает только SCM


что будет если я убью к примеру вот этот процесс %SystemRoot%\system32\services.exe ? вот он как раз и закешировал перемнные окружения, а раз он родитель, то все передалось моему сервису, так?
Сиськи и процессоры
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.