Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2012, 02:24   #1
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
Радость Добавить строку в переменную "моего компьютера"

Скажите пожалуйста возможно и как по средством делфи добавить строчку в переменную в "Мой Компьютер".

Спасибо.
Jleksern вне форума Ответить с цитированием
Старый 16.10.2012, 02:44   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
p51x вне форума Ответить с цитированием
Старый 16.10.2012, 08:20   #3
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

Также стоит помнить что для изменения системное переменной нужно иметь права системного администратора. Для изменения пользовательских переменных среды права системного администратора не нужны. Пользовательские переменные располагаются в системном реестре по адресу HKCU\Environment\ и далее строковые параметры с именами переменных, т.е. Path, Temp и т.д. Если нет - создайте.

Я для добавления значение в пользовательскую переменную Path (прописываю сетевой каталог с библиотеками BDE) использую небольшую консольную утилиту:
Код:
program UserPath;

{$APPTYPE CONSOLE}

uses
  SysUtils, Registry;
var
  param_1, param_2, lcparam_2: string;
  oldkey, lcoldkey: string;
  n, i, x, j: Integer;

  reg1: TRegIniFile;

procedure ShowHelp;
begin
  Writeln('Current value:' + reg1.ReadString('Environment', 'Path', '') +
    #10#13);
  Writeln('User Path Environment Editor ver. 1.0 - 4 jun 2012');
  Writeln('Add/Delete value in HKCU\Environment\Path');
  Writeln('Command parameters:');
  Writeln('without parameters  - show current User Path value');
  Writeln('-a directory        - add "directory" to User Path');
  Writeln('-d directory        - delete "directory" from User Path'#10#13);
end;

procedure WriteReg(const source: string);
var
  s: string;
begin
  if (Length(source) > 0) and (source[Length(source)] = ';') then
    s := Copy(source, 1, Length(source)-1)
  else
    s := source;
  reg1.WriteString('Environment', 'Path', s);
end;

begin
  reg1 := TRegIniFile.Create;
  if ParamCount <> 2 then
    ShowHelp
  else
  begin
   // newkey := '';
    n := Length(ParamStr(2));
    if n > 1 then
    begin
      param_2 := Trim(ParamStr(2));
      param_1 := Trim(AnsiLowerCase(ParamStr(1)));
      if (param_2[n] = '\') or (param_2[n] = ';') then
      begin
        param_2 := Copy(param_2, 1, n - 1);
        Dec(n);
      end;
      if (param_1 = '-a') or (param_1 = '/a') or (param_1 = '-d') or (param_1 =
        '/d') then
      begin
        lcparam_2 := AnsiLowerCase(param_2);
        oldkey := reg1.ReadString('Environment', 'Path', '');
        lcoldkey := AnsiLowerCase(oldkey);
        x := Length(oldkey);
        i := Pos(lcparam_2, lcoldkey);
        case param_1[2] of
          'a':
            begin
              if x = 0 then
                WriteReg(param_2)
              else
              begin
                if i > 0 then
                begin
                  j := i + n - 1; //входит в Path и не находится в конце
                  if (j < x) and (oldkey[j + 1] <> ';') then
                    WriteReg(param_2 + ';' + oldkey);
                end
                else
                  WriteReg(param_2 + ';' + oldkey);
              end;
            end;
          'd':
            begin
              if (x > 0) and (i > 0) then
              begin
                if n = x then
                  reg1.WriteString('Environment', 'Path', '')
                else
                begin
                  j := i + n - 1; //входит в Path и не находится в конце
                  if (j < x) and (oldkey[j + 1] = ';') then
                    WriteReg(Copy(oldkey, 1, i - 1) + copy(oldkey, i + n + 1, x
                      - j - 1))
                  else if j = x then
                    WriteReg(Copy(oldkey, 1, i - 1))
                end;
              end;
            end;
        end;
        Writeln('Ok');
      end
      else
        ShowHelp;
    end;
  end;
  reg1.CloseKey;
  FreeAndNil(reg1);
end.
astecenko вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как "предложить" браузеру пользователя скачать шрифт с моего сайта? lexluther HTML и CSS 14 08.04.2013 14:19
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Возможно, кто-то "ломает" пароль от моего почтового ящика на яндексе Вадим Мошев Безопасность, Шифрование 4 18.03.2012 08:22
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04