如题

解决方案 »

  1.   

    比如,我要设置一个环境变量,var1=1,var2=2,var3=http://www.csdn.net
      

  2.   

    windows系统的环境变量,也即windows98、windows2000、windowsxp系统
      

  3.   

    如果是Java的话你设环境变量,用Delphi有必要吗
      

  4.   

    HKEY_CURRENT_USER\Environment  
    path
      

  5.   

    改注册表:
    系统变量
    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment
    当前用户变量
    HKEY_CURRENT_USER\Environment
      

  6.   

    改注册表:
    系统变量
    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment
    当前用户变量
    HKEY_CURRENT_USER\Environment----------------------------------------------------------------------------
    没用,我用过,不起作用。要重起可能才又用,我不希望重起系统
      

  7.   

    重起是肯定不用的,最多要重新启动某些应用程序(典型如控制台);
    转MSDN原话(关键就是broadcast a WM_SETTINGCHANGE message):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. This allows applications, such as the shell, to pick up your updates.
      

  8.   

    去MSDN翻了好久:)
    To effect these changes without having to log off, broadcast a WM_SETTINGCHANGE message to all windows in the system, so that any interested applications (such as Program Manager, Task Manager, Control Panel, and so forth) can perform an update.
    http://support.microsoft.com/default.aspx?scid=kb;en-us;104011 
    就是在改注册表以后,调用如下语句
    procedure TForm1.Button1Click(Sender: TObject);
    var
      dwReturnValue:Cardinal;
    begin
      SendMessageTimeout (HWND_BROADCAST, WM_SETTINGCHANGE, 0,
                        LParam (PChar ('Environment')),
                        SMTO_ABORTIFHUNG, 5000, dwReturnValue);
    end;
      

  9.   

    另需注意,新增路径字串时,必须为ExpandString类型:)
      

  10.   

    function SendMessageTimeOut(hWnd: Integer; Msg: Integer; wParam: Integer; lParam: Integer; fuFlags: Integer; uTimeOut: Integer; lpdwResult: Cardinal): Integer;
    external '[email protected] stdcall';procedure AfterMyProgInstall(S: String);
    var
      lParam, wParam : Integer;
      dwReturnValue:Cardinal;
    begin
      wParam := 0;
      lParam := 0;
      
      SendMessageTimeout(HWND_BROADCAST,
                         WM_SETTINGCHANGE,
                         wParam,
                       lParam,
                       SMTO_NORMAL,
                         5000,
                         dwReturnValue);
    end;在编译运行时提示:运行时间错误。
    如何解决?
    谢谢!
    QQ:253769171
    Email:[email protected]
    Tel:13336023670
    Contact:周建中