Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Глобальные переменные системы


Автор: Winprogrammer 25.1.2007, 22:34
Доброго времени суток!

В свойствах системы на вкладке Дополнительно есть кнопочка, которая открывает список Переменные среды. Проблема заключается в следующем: как добавить в этот список новый пунктик(путь к папке моей проги)?

Заранее спасибо за помощь.

Автор: MetalFan 26.1.2007, 09:07
GetEnvironmentVariable/SetEnvironmentVariable ?

Автор: Winprogrammer 26.1.2007, 09:09
Цитата(MetalFan @  26.1.2007,  09:07 Найти цитируемый пост)
GetEnvironmentVariable/SetEnvironmentVariable ? 

Я смотрел эти ф-ии. Наскока я понял это ф-ии для глобальных переменных программы. На переменные системы это никак не реагирует. Все остается без изменений.  smile 

Автор: MetalFan 26.1.2007, 09:25
Winprogrammer, сорь, эти функции не влияют на глобальные переменные системы...

Автор: Snowy 26.1.2007, 11:47
Изменить глобальные переменные можно только с правами админа.
Вот набросал пример, который прописывает в систему переменную Vingrad:
Код

var
  r: TRegistry;
begin
  r := TRegistry.Create;
  try
    r.RootKey := HKEY_LOCAL_MACHINE;
    r.OpenKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', true);
    r.WriteString('Vingrad', 'http://forum.vingrad.ru/');
    SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, integer(PChar('Environment')));
  finally
    r.Free;
  end;
end;


Добавлено @ 11:48 
Без админских прав можно изменить переменные текущего юзверя:
Код

var
  r: TRegistry;
begin
  r := TRegistry.Create;
  try
    r.RootKey := HKEY_CURRENT_USER;
    r.OpenKey('Environment', true);
    r.WriteString('Vingrad', 'http://forum.vingrad.ru/');
    SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, integer(PChar('Environment')));
  finally
    r.Free;
  end;
end;


Добавлено @ 11:51 
Цитата(MSDN)

Calling SetEnvironmentVariable has no effect on the system environment variables. The user can add or modify system environment variables using the Control Panel. To programmatically add or modify system environment variables, add them to the HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment registry key, then broadcast a WM_SETTINGCHANGE message with lParam set to the string "Environment". This allows applications, such as the shell, to pick up your updates. Note that the values of the environment variables listed in this key are limited to 1024 characters.

Автор: Winprogrammer 26.1.2007, 17:23
Вау! Работает!

Жаль постов мало  smile . Так бы повысил рейтинг! 

Пасиба.

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