Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как узнать путь к файлу EXE


Автор: Pavelbej 22.6.2008, 22:24
Для определения пути к IE браузеру, я использую такую функцию:

Код

function GetBrowserPath: string;
const
    ie = '\SOFTWARE\Microsoft\IE Setup\Setup';
var
    r:  TRegistry;
    sl: TStringList;
    s:  string;
    i:  integer;
begin
  result := '';
  try
    r := TRegistry.Create(KEY_READ);
    r.RootKey := HKEY_LOCAL_MACHINE;    
        r.OpenKeyReadOnly(ie);
        result := r.ReadString('Path');
  except 
    r.Free;
  end;
end;


Но вот мне пишут что в Vista браузер не находит. А Висты у меня нет. 
Как еще можно узнать путь? 

Автор: Akella 22.6.2008, 23:55
Цитата(Pavelbej @  22.6.2008,  22:24 Найти цитируемый пост)
А Висты у меня нет. 

VirtualBox тебя спасёт

Автор: THandle 23.6.2008, 00:45
Цитата(Pavelbej @  22.6.2008,  23:24 Найти цитируемый пост)
 ie = '\SOFTWARE\Microsoft\IE Setup\Setup';


С полной ответственностью заявляю, что в моей Vindows Wista Home Premium нет и никогда не было такого ключа.

Замечания по коду(он нерабоч, но все же):

1. на кой вообще там переменные?
2. освобождать ресурсы мы будем конечно только в результате возникновения ошибки? Там нужен только finally, и никто боле...
3. Зачем, ну зачем, уже получив в конструкторе права Access как только для чтения, еще раз упоминать это право(все мы его конечно имеем, но лучше в некоторых случаях права свои приберечь).

Из всего вышесказаннаго, даю работающий у меня вариант:
Код


function GetBrowserPath: string;
begin
  with TRegistry.Create(KEY_READ) do
    try
      RootKey := HKEY_LOCAL_MACHINE;
      OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE', false);
      result := ReadString('Path');
    finally
      Free;
    end;
end;


или:

Код


function GetBrowserPath: string;
begin
  with TRegistry.Create do
    try
      RootKey := HKEY_LOCAL_MACHINE;
      OpenKeyReadOnly('\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE');
      result := ReadString('Path');
    finally
      Free;
    end;
end;



ЗЫ: у меня на конце полученного пути сидит знак точки ззапятой.

Автор: Pavelbej 23.6.2008, 12:58
Цитата(Akella @  22.6.2008,  23:55 Найти цитируемый пост)
VirtualBox тебя спасёт 

Шо такое?


Цитата(THandle @  23.6.2008,  00:45 Найти цитируемый пост)
Замечания по коду(он нерабоч, но все же):
1. на кой вообще там переменные?
2. освобождать ресурсы мы будем конечно только в результате возникновения ошибки? Там нужен только finally, и никто боле...
3. Зачем, ну зачем, уже получив в конструкторе права Access как только для чтения, еще раз упоминать это право(все мы его конечно имеем, но лучше в некоторых случаях права свои приберечь).

Это просто старые исходники, в спешке убирал лишнее.

Цитата(THandle @  23.6.2008,  00:45 Найти цитируемый пост)
С полной ответственностью заявляю, что в моей Vindows Wista Home Premium нет и никогда не было такого ключа.

А вот за это спасибо?

Автор: THandle 24.6.2008, 00:09
Pavelbej, ставь Висту на виртуальную машину и проверяй...


Цитата(Pavelbej @  23.6.2008,  13:58 Найти цитируемый пост)
А вот за это спасибо? 


Я то откуда знаю smile 

В моем примере дан ключ в котором именно и хранится путь к этому IE. smile

Добавлено через 40 секунд
Ой, извиняюсь. Не заметил что тема решенная. Ну да ладно.

Автор: Akella 25.6.2008, 07:15
Pavelbej, VirtualBox - это виртуальная машина, довольно простая в настройке, на русском языке. В ней ты можешь запустить "свисту" и поэксперементировать.

Цитата(Pavelbej @  22.6.2008,  22:24 Найти цитируемый пост)
Но вот мне пишут что в Vista браузер не находит. А Висты у меня нет. 


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)