Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отладка и запуск программы под Windows Vista 
:(
    Опции темы
Juju
Дата 18.3.2008, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 26.10.2006

Репутация: 1
Всего: 1



Не совсем уверен, что тема адекватна, но поскольку используються соответствующие компоненты - пишу сюда:

ПО: 
Windows Vista
Delphi 2007

Описание:
Программа писалась под Windows Xp, где не возникало подобных проблем.
Моя программа работает с реестром. (HKEY_LOCAL_MACHINE) Для того, чтобы она полноценно выполняля все свои функции исполняющий файл надо запускать от имени администратора - иначе вылетает с ошибкой при попытке чтения значений с реестра.
А в отладчике дальше этой ошибки пройти не могу... каким образом решается такая проблема?
PM MAIL   Вверх
Poseidon
Дата 18.3.2008, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Juju @  18.3.2008,  16:10 Найти цитируемый пост)
 иначе вылетает с ошибкой при попытке чтения значений с реестра.
Ну так ты видеть сразу пытаешься захапать себе права админа даже для тех операций, которые эти права не требуют (в частности просмотр реестра).

В общих чертах, у тебя скорее всего так: Reg := TRegistry.Create;

Попробуй так: Reg := TRegistry.Create(KEY_READ);


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
lukas
Дата 18.3.2008, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



попробуй так:

Код

  Var
  Reg: TRegistry;
begin
   Reg := TRegistry.Create(KEY_READ);


Добавлено через 1 минуту и 12 секунд
хех опоздал...  smile 


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Juju
Дата 18.3.2008, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 26.10.2006

Репутация: 1
Всего: 1



Poseidon
lukas
 
smile  smile 
Спасибо ребята огромное. Все пошло. Если не тяжело в двух словах: а почему?
Код

Reg := TRegistry.Create(HKEY_LOCAL_MACHINE); //Пишет все в HKEY_CURRENT_USER

а мой предыдущий:
Код

Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE

не работал вовсе?

PM MAIL   Вверх
lukas
Дата 18.3.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



Juju, 

потому что по умолчанию конструктор TRegistry.Create без параметра открывает как KEY_ALL_ACCESS <--- т.е. полный доступ к реестру... 

Код

constructor TRegistry.Create;
begin
  RootKey := HKEY_CURRENT_USER;
  FAccess := KEY_ALL_ACCESS;
  LazyWrite := True;
end;



--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Akella
Дата 18.3.2008, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Juju @  18.3.2008,  16:10 Найти цитируемый пост)
каким образом решается такая проблема? 

писать в реестр пользователя, а не компьютера, т.е. вместо HKEY_LOCAL_MACHINE нуна HKEY_LOCAL_USER
ну смотря, конечно какая программа, я в том смысле, что если есть возможно записывать данные в другое место
PM MAIL   Вверх
Juju
Дата 18.3.2008, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 26.10.2006

Репутация: 1
Всего: 1



Цитата(Akella @  18.3.2008,  21:43 Найти цитируемый пост)
писать в реестр пользователя, а не компьютера, т.е. вместо HKEY_LOCAL_MACHINE нуна HKEY_LOCAL_USER

в смысле: HKEY_CURRENT_USER ?
PM MAIL   Вверх
THandle
Дата 18.3.2008, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



Цитата(Juju @  18.3.2008,  18:44 Найти цитируемый пост)
Reg := TRegistry.Create(HKEY_LOCAL_MACHINE); //Пишет все в HKEY_CURRENT_USER

Все правильно пишет.

Ведь в Create указывается Access, а не RootKey.


Код

constructor TRegistry.Create;
begin
  RootKey := HKEY_CURRENT_USER;
  FAccess := KEY_ALL_ACCESS;
  LazyWrite := True;
end;

constructor TRegistry.Create(AAccess: LongWord);
begin
  Create;
  FAccess := AAccess;
end;





Juju, посмотри мою статейку, может быть найдешь в ней что-нибудь полезное для себя.
http://forum.vingrad.ru/articles/topic-200341.html

Это сообщение отредактировал(а) THandle - 18.3.2008, 21:58
PM   Вверх
Akella
Дата 18.3.2008, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Juju @  18.3.2008,  21:52 Найти цитируемый пост)
в смысле: HKEY_CURRENT_USER ? 

ну зачем ты лезешь HKEY_LOCAL_MACHINE? лезь в HKEY_CURRENT_USER

Добавлено через 22 секунды
и вообще, что ты туда пишешь?
PM MAIL   Вверх
Juju
Дата 19.3.2008, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 26.10.2006

Репутация: 1
Всего: 1



THandle, на твою статью я как раз во время поиска и наткнулся... даже распечатал, спасибо огромное!
Akella, пишу туда настройки программы, как от админа программы так и от конкретного user-а программы
PM MAIL   Вверх
SlaUr
Дата 19.3.2008, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 3
Всего: 5



Я прикрепляю манифест и прога  работает под правами администратора
у меня он такой:
Код

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
 <assembly xmlns=“urn:schemas-microsoft-com:asm.v1“ manifestVersion=“1.0“>
  <assemblyIdentity version=“1.0.0.0“ 
       processorArchitecture=“X86“
       name=“Sample“
       type=“win32“ />
  <description>Sample Manifest Test Application</description>
  <trustInfo xmlns=“urn:schemas-microsoft-com:asm.v3“>
    <security>
      <requestedPrivileges>
        <!– <requestedExecutionLevel level=”requireAdministrator” /> –> 
        <requestedExecutionLevel level=“asInvoker“ />
        <!– <requestedExecutionLevel level=”highestAvailable” /> –>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>


Добавлено:
Это я для тех кому нужно писать в реестр с админскими правами

Это сообщение отредактировал(а) SlaUr - 19.3.2008, 09:00
PM MAIL   Вверх
Juju
Дата 19.3.2008, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 26.10.2006

Репутация: 1
Всего: 1



SlaUr, а как "пристегивается" этот файлик?
PM MAIL   Вверх
lukas
Дата 19.3.2008, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



как выразилась Негрософт, теперь она не советуют записывать излишки информации в реестр, он только для особых случаев...  smile  "новая политика"  smile 


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Akella
Дата 20.3.2008, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Juju @  19.3.2008,  02:05 Найти цитируемый пост)
Akella, пишу туда настройки программы, как от админа программы так и от конкретного user-а программы 

пиши всё в HKEY_CURRENT_USER или лучше в INI, так легче будет и прогу переносить или после переустановки системы сохранять все настройки, особенно если их много
PM MAIL   Вверх
Juju
Дата 22.3.2008, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 26.10.2006

Репутация: 1
Всего: 1



Akella
>пиши всё в HKEY_CURRENT_USER или лучше в INI
Спасибо за совет. Пока пишу в HKEY_CURRENT_USER.
Akella, SlaUr, THandle, lukas - Ребята, всем огромное спасибо за помощь!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0591 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.