Права на чтение из реестра

Программирование на Active Server Pages и VBScript.
skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Права на чтение из реестра

Сообщение skiperski » 26.03.2006 (Вс) 21:06

Ситуёвина такая: ASP'шный проект время от времени вызывает функции из DLL'ки. Собственно в самой DLL'ке ничего особенного нет. Всего-то вычитывает из реестра значение ключа LocationPath = GetSetting("MyProject", "\", "Location", ""). При выполнении из под IDE всё читается, а при компиляции - нет. Причём не выдаёт никаких ошибок, а просто возвращает пустую строку. GetLastError() возвращает ноль. Если эту же DLL'ку подключить к простому проекту, то снова работает, т.е. для процессов запущенных из под моего аккаунта всё работает нормально, но винда почему-то не позволяет пользователю IUSR_MyName читать из реестра. В настройках IIS поставил чтобы анонимный пользователь считался работающим под моим аккаунтом. Не помогло. В реестре выставил права на доступ к ключу этому самому IUSR_MyName на чтение - не помогло, разрешил всем читать - то же самое. Может надо дать доступ не только этой ветке, но всей иерархии уровнями выше? Короче, что делать?

ЗЫ: Такая конструкция точно должна работать, т.к. я сам видел подобное, но, правда, под Вынь2К, а у меня сейчас ХР.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 26.03.2006 (Вс) 21:31

обычно я делал ActiveX DLL и ставил их под COM+ с нужным аккаунтом для запуска

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 27.03.2006 (Пн) 0:16

Вот это и надо. ActiveX DLL, собственно говоря, есть, надо как-то указать под каким аккаунтом она должна вызываться. Как и где это сделать?

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 28.03.2006 (Вт) 1:53

Ответит кто-нибудь как установить права?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 28.03.2006 (Вт) 10:20

открывай Component Services (mmc), ищи свою com+ библиотеку и открывай закладку свойств Identity и выставляй того юзера , у которого права админа.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 28.03.2006 (Вт) 10:51

Чтобы читать из реестра, не надо быть админом.

А выставление чему-либо, связанному с Web админских прав, чревато...

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 28.03.2006 (Вт) 11:35

Во-первых, 2 Kost_One, не нахожу я там своего объекта.

Во-вторых, 2 RayShade, я же описал проблему и сам бы рад не выставлять права админа и прочих выкрутасов не делать, но не работает как дОлжно. Может в чём другом проблема?

Собственно в кач-ве эксперимента создайте DLL с кодом
Код: Выделить всё
//Class Core
Option Explicit

Public Property Get LocationPath() As String
    LocationPath = GetSetting("MyProject", "\", "Location", "")
End Property

и ASP с кодом
Код: Выделить всё
<%@Language="JScript"%>
<%
    var Obj = Server.CreateObject("MyProject.Core");
    Response.Write("_"+Obj.LocationPath+"_");
%>

или
Код: Выделить всё
<%@Language="VBScript"%>
<%
    Dim Obj
    Obj = Server.CreateObject("MyProject.Core")
    Response.Write "_" & Obj.LocationPath & "_"
%>

Предварительно в секцию MyProject надо записать любое значение.

Если запустить из-под IDE, то на странице _значение из реестра_. Скомпилируйте DLL'ку и стартаните страницу - получите __ (два подчерка).

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 28.03.2006 (Вт) 11:41

если ты ее туда не добавлял, то надо создать new COM+ Application , выбрать Create Empty Application, затем ввести любое имя и Server Application галку поставить, потом выбрать юзера (доменного или локального) под которым собственно и будет работать твоя dll-ка. Затем зайти во вновь созданную application в раздел Components и добавить New Component , выбрать путь к своей ActiveX DLL и вуаля...

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 28.03.2006 (Вт) 12:00

"Ура! Заработало!" (с)

Спасибо, Kost_One!

Теперь вопрос: как то же самое сделать программно при инсталляции? Предполагаю использовать либо стандартный инсталлер, либо Wise.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 28.03.2006 (Вт) 12:05

можно конечно засунуть это дело в инсталятор, но там есть ряд сложностей. мы делали обычно пакет через Component Services\Export Application (указывая нужное приложение), а уже полученный пакет включали в инсталляцию.

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 28.03.2006 (Вт) 12:13

Ещё раз спасибо! Пакет сделал, как его инсталлятору подсунуть буду смотреть уже позже при сборке.


Вернуться в ASP и VBScript

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33

    TopList