If it helps, this is how I have changed the PATH env. var. using some other weird obscure language (OK, C++). Sorry it is not in Perl, I hope this is enough for you to get the gist:
#define ENVNAME "Path"
#define MAXLEN 1024
static void UpdatePath (char *szDir)
{
char szPath [MAXLEN]={0};
DWORD dwReturnValue;
// Get previous value
if ( !GetEnvironmentVariable (ENVNAME, szPath, MAX_PATH) )
ReportError ("GetEnvironmentVariable", GetLastError());
// Update path
strcat (szPath, ";");
strcat (szPath, szDir);
// On W2K we need OSVERSIONINFOEX
OSVERSIONINFO OsVer;
OsVer.dwOSVersionInfoSize = sizeof (OsVer);
GetVersionEx (&OsVer);
if ( OsVer.dwPlatformId == VER_PLATFORM_WIN32_NT )
{
// Write to the user environment variables -
// only exists on WNT/W2K!
HKEY hEnv;
dwReturnValue = RegOpenKeyEx (HKEY_CURRENT_USER,
"Environment", 0,
KEY_SET_VALUE,
&hEnv) ;
if ( dwReturnValue != ERROR_SUCCESS )
ReportError ("RegOpenKeyEx", dwReturnValue);
dwReturnValue = RegSetValueEx (hEnv, ENVNAME, 0,
REG_SZ, (BYTE*)szPath,
strlen(szPath)+1);
if ( dwReturnValue != ERROR_SUCCESS )
ReportError ("RegSetValueEx", dwReturnValue);
RegFlushKey (hEnv);
if ( hEnv ) RegCloseKey(hEnv);
}
// Tell the rest of the world (cmd line)
if ( !SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
(LPARAM) "Environment", SMTO_ABORTIFHUNG,
5000, &dwReturnValue) )
{
ReportError ("SendMessageTimeout", GetLastError());
}
// Tell our children
if ( !SetEnvironmentVariable (ENVNAME, szPath) )
ReportError ("SetEnvironmentVariable", GetLastError());
} // UpdEnv
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.