Wow6432Node RegistryKey Windows 7
От: Business  
Дата: 20.07.10 11:50
Оценка:
Здравствуйте.
Есть библиотека для хранения значений программы в реестре. Данная библиотека используется как в WPF, так и в Web-сервисе.
Под WPF все отлично работает(записывает, считывает из/в "HKEY_LOCAL_MACHINE\SOFTWARE\MyApplicationName"). А вот под Web-сервисом(запуск под Visual Studio — больше никак не пробовал...), чтение данных из реестра происходит из "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node"! Да еще и Visual Studio отказывается прописывать манифест приложения под Web-сервисом, чтоб виртуализацию оменить....
Подскажите — как заставить библиотеку работать правильно под Web-сервисом?
"Производная функции" — со школы не пойму чё это и в какой момент нужно будет применить... :???:
Re: Wow6432Node RegistryKey Windows 7
От: vmpire Россия  
Дата: 20.07.10 12:58
Оценка: 2 (1)
Здравствуйте, Business, Вы писали:

B>Здравствуйте.

B>Есть библиотека для хранения значений программы в реестре. Данная библиотека используется как в WPF, так и в Web-сервисе.
B>Под WPF все отлично работает(записывает, считывает из/в "HKEY_LOCAL_MACHINE\SOFTWARE\MyApplicationName"). А вот под Web-сервисом(запуск под Visual Studio — больше никак не пробовал...), чтение данных из реестра происходит из "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node"! Да еще и Visual Studio отказывается прописывать манифест приложения под Web-сервисом, чтоб виртуализацию оменить....
B>Подскажите — как заставить библиотеку работать правильно под Web-сервисом?
Похоже, сервис у вас 32-битный. Или превратите его в 64-битный (как-зависит от сервиса) или используйте функцию RegDisableReflectionKey
Re[2]: Wow6432Node RegistryKey Windows 7
От: Business  
Дата: 20.07.10 14:08
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Похоже, сервис у вас 32-битный. Или превратите его в 64-битный (как-зависит от сервиса) или используйте функцию RegDisableReflectionKey


А подробней(если это не шутка, конечно...)? Как превратить net-сервис в 64-битный? И... RegDisableReflectionKey — как я понял это через P/Invoke? или?....
"Производная функции" — со школы не пойму чё это и в какой момент нужно будет применить... :???:
Re[3]: Wow6432Node RegistryKey Windows 7
От: vmpire Россия  
Дата: 20.07.10 14:40
Оценка:
Здравствуйте, Business, Вы писали:

V>>Похоже, сервис у вас 32-битный. Или превратите его в 64-битный (как-зависит от сервиса) или используйте функцию RegDisableReflectionKey


B>А подробней(если это не шутка, конечно...)? Как превратить net-сервис в 64-битный?

Нет, не шутка. Но как — зависит от сервиса, как я и сказал. Что за процесс служит сервисом?

B> И... RegDisableReflectionKey — как я понял это через P/Invoke? или?....

Да, через него.
Вообще, рекомендую прочитать тут: http://msdn.microsoft.com/en-us/library/ms724072%28VS.85%29.aspx и по ссылкам.
Re[4]: Wow6432Node RegistryKey Windows 7
От: Business  
Дата: 21.07.10 06:00
Оценка:
Здравствуйте, vmpire, Вы писали:

B>>Как превратить net-сервис в 64-битный?

V>Что за процесс служит сервисом?

Создал ВЕБ-СЕРВИС в Visual Studio(как обычно = new Project и т.д.)...
Процесс показывает такой: ("WebDev.WebServer.EXE" "ASP.NET Development Server — Port 49328" Type="Managed").

Ну а когда на IIS разворачиваешь — там ("w3wp.exe" Type="T-SQL, Managed, x86").
Ну и факт в том, что и под Visual Studio и под IIS все "не правильно" работает.

B>> И... RegDisableReflectionKey — как я понял это через P/Invoke? или?....

V>Да, через него.
V>Вообще, рекомендую прочитать тут: http://msdn.microsoft.com/en-us/library/ms724072%28VS.85%29.aspx и по ссылкам.
"Тут" — читал ничего толкового(практического) для себя не нашел...(не хочется P/Invoke и напрямую с COM..... — классы-то по работе с реестром вроде есть в FW3.5!, а получается — что их бестолково использовать! ) Написано — во FrameWork 4.0 будет добавлен функционал по явному выбору — "виртуализировать или нет!".
Кстати, может зависить от FrameWork-a? """Возможно""" у меня он 32-х битный(3.5).... Как посмотреть — не знаю...

Нашел еще вот что:Как переключаться между 32-разрядные версии ASP.NET 1.1 и 64-разрядную версию ASP.NET 2.0 на 64-разрядной версии Windows. — здесь меня смущает слово "переключаться" — так и не понятно какие последствия переключения!(вопрос возникает сам собой — "И-и-и что будет?.... ")
"Производная функции" — со школы не пойму чё это и в какой момент нужно будет применить... :???:
Re[5]: Wow6432Node RegistryKey Windows 7
От: vmpire Россия  
Дата: 21.07.10 07:23
Оценка:
Здравствуйте, Business, Вы писали:

B>>>Как превратить net-сервис в 64-битный?

V>>Что за процесс служит сервисом?

B>Создал ВЕБ-СЕРВИС в Visual Studio(как обычно = new Project и т.д.)...

B>Процесс показывает такой: ("WebDev.WebServer.EXE" "ASP.NET Development Server — Port 49328" Type="Managed").
Как рулить этим сервером — честно говоря, не знаю

B>Ну а когда на IIS разворачиваешь — там ("w3wp.exe" Type="T-SQL, Managed, x86").

А вот с этим проще: проверьте, что ASP.NET зарегистрирован из каталога Framework64. Если нет — перерегистрируйте, запустив сначала
Aspnet_regiis.exe /u из каталока 32-битного фреймворка, а затем Aspnet_regiis.exe /i из Framework64

B>Ну и факт в том, что и под Visual Studio и под IIS все "не правильно" работает.


B>>> И... RegDisableReflectionKey — как я понял это через P/Invoke? или?....

V>>Да, через него.
V>>Вообще, рекомендую прочитать тут: http://msdn.microsoft.com/en-us/library/ms724072%28VS.85%29.aspx и по ссылкам.
B>"Тут" — читал ничего толкового(практического) для себя не нашел...(не хочется P/Invoke и напрямую с COM.....
COM-то тут при чём?
B>- классы-то по работе с реестром вроде есть в FW3.5!, а получается — что их бестолково использовать! ) Написано — во FrameWork 4.0 будет добавлен функционал по явному выбору — "виртуализировать или нет!".
Framefork читает из той части registry, из которой по умолчанию читает процесс,в котором он выполняется, в зависимости от типа (32 или 64).
B>Кстати, может зависить от FrameWork-a? """Возможно""" у меня он 32-х битный(3.5).... Как посмотреть — не знаю...
На 64-битной машине .NET ставится в двух версиях сразу. Какая будет выполняться из IIS — зависит от настроек. Какая будет выбрана при обычном запуске приложения — зависит от типа CPU, выбранного при компиляции.

B>Нашел еще вот что:Как переключаться между 32-разрядные версии ASP.NET 1.1 и 64-разрядную версию ASP.NET 2.0 на 64-разрядной версии Windows. — здесь меня смущает слово "переключаться" — так и не понятно какие последствия переключения!(вопрос возникает сам собой — "И-и-и что будет?.... ")

Э... переключится
А ещё дизайнер reporting services могжет отвалится, он в 2005/2008 студии 32-битный (про 2010 не знаю).
Я думаю, Вам это не нужно, Вам как раз наоборот нужно запуститься в native-Режиме.
Re[6]: Wow6432Node RegistryKey Windows 7
От: Business  
Дата: 21.07.10 11:22
Оценка:
Здравствуйте, vmpire, Вы писали:

B>>Ну а когда на IIS разворачиваешь — там ("w3wp.exe" Type="T-SQL, Managed, x86").

V>проверьте, что ASP.NET зарегистрирован из каталога Framework64.
Как проверить?
V>Если нет — перерегистрируйте, запустив сначала
V>Aspnet_regiis.exe /u из каталока 32-битного фреймворка, а затем Aspnet_regiis.exe /i из Framework64
Aspnet_regiis.exe /u к сожалению выдал ошибку "была сделана попытка загрузить приложение, имеющее неверный формат"
Затем, я не знаю что я зделал — и перерегистрация прошла без ошибок — толку только НОЛЬ — как читала моя библиотека под веб-сервисом(под IIS) из Wow6432Node, так и читает от туда....

B>>не хочется P/Invoke и напрямую с COM.....

Т.к у меня с переводом типов плоховато из C++ в C#, а pinvoke.net не всегда ту, семантику предлагает, которую нужно.
V>COM-то тут при чём?
Ну я имел ввиду Win Api...(для меня эти понятия, взором из мира C# — одинаковые)

Я думаю на WinApi писать! Спасибо за помощь!
"Производная функции" — со школы не пойму чё это и в какой момент нужно будет применить... :???:
Re: Wow6432Node RegistryKey Windows 7
От: Business  
Дата: 21.07.10 13:40
Оценка:
Сам отвечаю — как я решил проблему с веб-сервисом:
Я развернул свой веб-сервис в IIS. И там выставил галку:..............

1) идем по пути: Диспетчер служб IIS\Пулы приложений\
2) выбираем пул приложений, который относится к нужному веб-сервису
3) на правой стороне окна "Действия" кликаем на ссылку "Дополнительные параметры"
4) в появившемся окошке выставляем в false значение параметра "Разрешены 32-разрядные приложения"
наслаждаемся правильной работой вашего сервиса!!!!!!!!
Кстати скажу — к веб сервису были подключены COM+ библиотеки(прям в Visual Studio = как оболочка Interop) — на удивление тоже все работает!
Еще раз спасибо vmpire — за беседу!
"Производная функции" — со школы не пойму чё это и в какой момент нужно будет применить... :???:
Re[7]: Wow6432Node RegistryKey Windows 7
От: vmpire Россия  
Дата: 21.07.10 17:58
Оценка:
Здравствуйте, Business, Вы писали:

B>>>Ну а когда на IIS разворачиваешь — там ("w3wp.exe" Type="T-SQL, Managed, x86").

V>>проверьте, что ASP.NET зарегистрирован из каталога Framework64.
B>Как проверить?
Зайдите в свойства веб-сайта, вкладка Home Directory кнопка Configuration, там application mapping. Смотрите на каталог, в котором сконфигурирован handler для aspx. Должен быть каталог Framework64, например D:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll

V>>Если нет — перерегистрируйте, запустив сначала

V>>Aspnet_regiis.exe /u из каталока 32-битного фреймворка, а затем Aspnet_regiis.exe /i из Framework64
B>Aspnet_regiis.exe /u к сожалению выдал ошибку "была сделана попытка загрузить приложение, имеющее неверный формат"
B>Затем, я не знаю что я зделал — и перерегистрация прошла без ошибок — толку только НОЛЬ — как читала моя библиотека под веб-сервисом(под IIS) из Wow6432Node, так и читает от туда....
А Вы Aspnet_regiis.exe /i точно запускали из каталога Framework64?
Re[8]: Wow6432Node RegistryKey Windows 7
От: Business  
Дата: 23.07.10 06:51
Оценка:
Здравствуйте, vmpire, Вы писали:

V>>>проверьте, что ASP.NET зарегистрирован из каталога Framework64.

B>>Как проверить?
V>Зайдите в свойства веб-сайта, вкладка Home Directory кнопка Configuration, там application mapping. Смотрите на каталог, в котором сконфигурирован handler для aspx. Должен быть каталог Framework64, например D:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll
Чет я не пойму — где отправная точка "Свойства веб-сайта" — в IIS? — нет там такого!(у меня Windows 7)


V>А Вы Aspnet_regiis.exe /i точно запускали из каталога Framework64?

точно!
"Производная функции" — со школы не пойму чё это и в какой момент нужно будет применить... :???:
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.