Heenan, Lambert
Lambert.Heenan at AIG.com
Fri Nov 21 12:12:18 CST 2003
Um... not sure about the API call for the environment variable, but Access 97 (and up, I believe) has the Environ() function, call it like this... strEnvVar = Environ("CLIENTNAME") Also, to confirm if your environment variable is being set, just open a DOS box and type the command SET. It will list all the environment variables that are set and you can see their values. Lambert > -----Original Message----- > From: Christopher Hawkins [SMTP:clh at christopherhawkins.com] > Sent: Friday, November 21, 2003 12:58 PM > To: accessd at databaseadvisors.com > Subject: [AccessD] OT: Broken API Call in WinXP: > GetEnvironmentVariable? > > I have inherited an application that uses the GetEnvironmentVariable > API to identify a machine for purposes of authenticating that a > certain application can be accessed from that machine. For those > unfamiliar, here's the code that makes this call: > > ***START*** > Declare Function GetEnvironmentVariable Lib "kernel32" Alias > "GetEnvironmentVariableA" (ByVal lpName As String, ByVal lpBuffer As > String, ByVal nSize As Long) As Long > > > Private Function GetClientName() As String > > Dim strBuffer As String > Dim iLenBuffer As Integer > Dim retval As Integer > > On Error GoTo Err_GetClientName > > strBuffer = Space(255) > iLenBuffer = 255 > > retval = GetEnvironmentVariable("CLIENTNAME", strBuffer, > iLenBuffer) > If Len(Trim(strBuffer)) <> 0 Then > strBuffer = Left(strBuffer, Len(Trim(strBuffer)) - 1) > Else > ' probably no client name > strBuffer = "" > End If > > Exit_GetClientName: > Exit Function > > Err_GetClientName: > MsgBox Err.Description, , "Error in Function > modUtil.GetClientName" > Resume Exit_GetClientName > Resume 0 ' .FOR TROUBLESHOOTING > End Function > ***END*** > > This has been working like a charm on Windows98 machines. We add the > following line to AutoExec.bat: > > "SET CLIENTNAME=FOOBAR" > > And the API call returns the string "FOOBAR", every time without fail. > > Now my client is migrating all their machines to XP. Unfortunately, > this same API call returns an empty string, or sometimes the string > "Console". > > "OK," I think to myself. "XP doesn't really use AutoExec.bat, it uses > AutoExec.NT. I'll set the ClientName in that file instead! But that > does not work either. > > IThe fact that XP will return the string "Console" every so often > made me think " Aha! On XP this API call is looking in the registry, > not in a .bat file". So I searched the registry for every place > where the string "Console" existed, and one by one replaced them with > "FOOBAR" and re-ran the code. I still got nothing. If it was > returning "Console" before, it returned "Console" again. if it > returned empty string before, it returned empty string again. > > Then I wet to Control Panel > System > Advanced > Environment > Variables and added a system variable named CLIENTNAME with a value > of FOOBAR. > > That did not work either, and now I am out of ideas. > > Is there anyone who owns the API to the degree that they can tell me > where exactly GetEnvironmentVariable is looking to get the value it > returns? I am well and truly stumped. > > -Christopher- > > > _______________________________________________ > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com