Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.10;
Скачать: CL | DM;

Вниз

Службы Windows   Найти похожие ветки 

 
noname123   (2009-11-16 14:41) [0]

procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
var
 reg: TRegistry;
begin
 reg := TRegistry.Create;
 if reg.OpenKey("\Software", False) then
   {Какое то действие}
 end;
end;

почему этот код проходит

procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
var
 reg: TRegistry;
begin
 reg := TRegistry.Create;
 if reg.OpenKey("\Software\65", False) then
   {Какое то действие}
 end;
end;
а вот этот не проходит, т.е. открывает только первый ключ в разделе а если вложенный тогда не открывает, почему??


 
Сергей М. ©   (2009-11-16 15:46) [1]


> если вложенный тогда не открывает


А если открывать нечего ?
Ну нет в реестре ключа HKCU\Software\65, а ты вторым параметром запретил его создание ..


 
noname123   (2009-11-17 07:39) [2]

если бы ключа не было я не задавал бы такой вопрос. Там есть такой ключ!


 
brother ©   (2009-11-17 07:43) [3]

читай это:
http://www.mycomp.com.ua/text/11132;jsessionid=9C3833D54770DEA520F2E84908ABF1FD
все поймешь...


 
Anatoly Podgoretsky ©   (2009-11-17 07:44) [4]

> noname123  (17.11.2009 07:39:02)  [2]

Где там?


 
noname123   (2009-11-17 07:46) [5]

HKCU\Software\65 - здесь, в реестре


 
brother ©   (2009-11-17 07:47) [6]

почиай уже [3]!


 
noname123   (2009-11-17 07:54) [7]


> brother ©   (17.11.09 07:43) [3]
>
> читай это:
> http://www.mycomp.com.ua/text/11132;jsessionid=9C3833D54770DEA520F2E84908ABF1FD
> все поймешь...


ничего нового не узнал. Что я должен был понять?


 
brother ©   (2009-11-17 07:59) [8]

1. из твое кода не понятно, ты читаешь или пишешь?
2.
Procedure TForm1.Button2Click (Sender: TObject);
Var
Reg: TRegistry;
Begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey ("Software\Proga\Primer", true);
// Если ветка существует, то
If Reg.ValueExists ("parameter") then
// Присваиваем компоненту TEdit значение записанного нами параметра
Edit1.Text:=Reg.ReadString ("parameter")
Else showmessage (‘Запись не найдена’)
Reg.CloseKey;
Reg.Free;
end;

где?


 
noname123   (2009-11-17 08:06) [9]


> brother ©   (17.11.09 07:59) [8]
>
> 1. из твое кода не понятно, ты читаешь или пишешь?
> 2.
> Procedure TForm1.Button2Click (Sender: TObject);
> Var
> Reg: TRegistry;
> Begin
> Reg:=TRegistry.Create;
> Reg.RootKey:=HKEY_LOCAL_MACHINE;
> Reg.OpenKey ("Software\Proga\Primer", true);
> // Если ветка существует, то
> If Reg.ValueExists ("parameter") then
> // Присваиваем компоненту TEdit значение записанного нами
> параметра
> Edit1.Text:=Reg.ReadString ("parameter")
> Else showmessage (‘Запись не найдена’)
> Reg.CloseKey;
> Reg.Free;
> end;
> где?
>


в моем коде я открываю ключ HKCU\Software\65, мне надо просто открыть ключ про чтение или запись там не было вопроса. По умолчанию RootKey имеет значение HKCU.


 
Сергей М. ©   (2009-11-17 08:13) [10]


> Там есть такой ключ


Может и есть - в HKCU того пользователя, от имени которого ты стартовал Regedit и узрел этот ключ.
А в HKCU другого пользователя, от имени которого стартовал твой сервис, такого ключа, по всей вероятности, нет.


 
noname123   (2009-11-17 08:38) [11]


> Сергей М. ©   (17.11.09 08:13) [10]
>
>
> > Там есть такой ключ
>
>
> Может и есть - в HKCU того пользователя, от имени которого
> ты стартовал Regedit и узрел этот ключ.
> А в HKCU другого пользователя, от имени которого стартовал
> твой сервис, такого ключа, по всей вероятности, нет.


ясно! Буду разбираться. А с определением запущенных процессов тоже самое??


 
Сергей М. ©   (2009-11-17 09:00) [12]


> с определением запущенных процессов тоже самое?


Чего "тоже самое" ?
Какое отношение к этому имеет работа с реестром ?


 
noname123   (2009-11-17 09:17) [13]

с реестром никакого, я имел ввиду в службе


 
Сергей М. ©   (2009-11-17 09:36) [14]

Нет, не тоже самое


 
noname123   (2009-11-17 09:51) [15]

function ProcessFileName(Description: string): string;
var
 Handle: THandle;
 wnd: HWND;
 PID: DWORD;
begin
 wnd := FindWindow(nil, PChar(Description));
 if wnd<>0 then begin
   PID := INVALID_HANDLE_VALUE;
   GetWindowThreadProcessId(Wnd, @PID);
   Handle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, PID);
   if Handle <> 0 then
   try
     SetLength(Result, MAX_PATH);
     if GetModuleFileNameEx(Handle, 0, PChar(Result), MAX_PATH) > 0 then
       SetLength(Result, StrLen(PChar(Result)))
     else
       Result := "";
   finally
     CloseHandle(Handle);
   end;
 end;
end;


тогда почему вот эта функция не работает внутри службы, а если обычная программа все нормально работает


 
Сергей М. ©   (2009-11-17 10:20) [16]

А где в [15] "определение запущенных процессов" ?
В упор не вижу.
Вижу лишь несуразную попытку получить имя файла исполняемого модуля некоего чужого поцесса.


 
Leonid Troyanovsky ©   (2009-11-17 11:15) [17]


> noname123   (17.11.09 09:51) [15]

http://rsdn.ru/summary/2393.xml

--
Regards, LVT.


 
noname123   (2009-11-17 12:21) [18]


> Сергей М. ©   (17.11.09 10:20) [16]
>
> А где в [15] "определение запущенных процессов" ?
> В упор не вижу.
> Вижу лишь несуразную попытку получить имя файла исполняемого
> модуля некоего чужого поцесса.


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


 
Leonid Troyanovsky ©   (2009-11-17 12:26) [19]


> noname123   (17.11.09 12:21) [18]

> файла процесса по названию главного окна.

Во, снова запутался. Нет никого "главного".
Но, все равно, нет там никакого окна.

--
Regards, LVT.


 
Сергей М. ©   (2009-11-17 13:20) [20]


> а в службе не пашет


А кто за тебя должен выяснять, почему "не пашет" ?
Где у тебя анализ LastError хотя бы одной из используемых WinAPI-функций ?
Нет его, напрочь отсутствует.


 
noname123   (2009-11-17 14:55) [21]


> Сергей М. ©   (17.11.09 13:20) [20]
>
>
> > а в службе не пашет
>
>
> А кто за тебя должен выяснять, почему "не пашет" ?
> Где у тебя анализ LastError хотя бы одной из используемых
> WinAPI-функций ?
> Нет его, напрочь отсутствует.


почему не понял но функция заработала, буду разбираться.


> Сергей М. ©   (17.11.09 10:20) [16]
>
> А где в [15] "определение запущенных процессов" ?
> В упор не вижу.
> Вижу лишь несуразную попытку получить имя файла исполняемого
> модуля некоего чужого поцесса.


а как еще можно определить путь к файлу? Не судите строго я навичек, если есть материал дайте ссылку. Спасибо!


 
noname123   (2009-11-17 14:56) [22]

Материалы по созданию служб и по работе с процессами


 
Игорь Шевченко ©   (2009-11-17 15:14) [23]


> Материалы по созданию служб и по работе с процессами


тебя в гугле навсегда забанили ?


 
Leonid Troyanovsky ©   (2009-11-17 15:21) [24]


> noname123   (17.11.09 14:56) [22]

Ну, если Алекса Федотова так быстро осилил, читай рядом,
там много всякой мудрости.

--
Regards, LVT.


 
noname123   (2009-11-18 05:58) [25]


> Игорь Шевченко ©   (17.11.09 15:14) [23]
>
>
> > Материалы по созданию служб и по работе с процессами
>
>
> тебя в гугле навсегда забанили ?


Нет! просто хотел узнать может у кого нить есть


 
noname123   (2009-11-18 06:02) [26]


> Leonid Troyanovsky ©   (17.11.09 15:21) [24]
>
>
> > noname123   (17.11.09 14:56) [22]
>
> Ну, если Алекса Федотова так быстро осилил, читай рядом,
>
> там много всякой мудрости.
>
> --
> Regards, LVT.


еще не читал. но, там примеры на С. Буду читать. Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2010.01.10;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.017 c
2-1255952617
defen
2009-10-19 15:43
2010.01.10
запрет на закрытие программы или запустить как системный ресурс


4-1226015472
Eraser
2008-11-07 02:51
2010.01.10
Проверка подлинности сервера


2-1258375107
defen
2009-11-16 15:38
2010.01.10
разрешения для изменения ключей реестра


1-1233066145
webpauk
2009-01-27 17:22
2010.01.10
курсор в Tedit


2-1258371670
noname123
2009-11-16 14:41
2010.01.10
Службы Windows