This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Environment Var Problems with Perl - impact on Win32::OLEž


Greetings, Chris Day!

> In attempting to move some perl (5.10.1-3) code from a Windows XP (Cygwin
> 1.7.9) environment to a Windows Server 2008 R2 (Cygwin 1.7.9 with perl
> 5.10.1-3) I seem to have discovered a problem with Cygwin/Perl not resolving
> most Microsoft environment strings. 

> For example, running the following from a Cygwin bash shell (or seemingly
> any Cygwin shell) on any of the XP, Windows 7 and Server 2008 2 machines I
> have: 

> bash$ perl -e "use Win32; print Win32::ExpandEnvironmentStrings('%OS%')"
> all give
> %OS%

Try $OS
Although, wait.
What "set | grep OS" tells you in the same bash session?

> While running this from cmd.exe:

C:\cygwin\bin>>perl -e "use Win32; print Win32::ExpandEnvironmentStrings('%OS%')"
> gives the correct answer of
> Windows_NT

> This problem seems to exist for all environment variables I have tried,
> strangely apart from %PATH%. I am not sure if this is a Perl or Cygwin
> issue. I have tried a newer version of Perl with the same results.

> This problem resolving environment variables really shows up when using
> attempting to use certain COM libraries on Windows7 or Windows Server (I
> guess with Vista also), as in these OS Microsoft has started to use
> environment variables in the registry paths of lots of their libraries,
> whilst they did not do this with XP.

> I think it is for this reason people have been experiencing problems with
> ADODO and other COM functions using Win32::OLE. 

It's not an easy task to try and bribe two worlds together.

> For example, the ADODO.Connection registry key on Windows 7
> (HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{00000514-0000-0010-8000-00AA006D2EA4})
> has library path as %CommonProgramFiles(x86)%\System\ado\msado15.dll

What is the registry key type? Is it REG_SZ or REG_EXPAND_SZ ?

> while under XP the ADODO.Connection registry key has its library as
> C:\Program Files (x86)\Common Files\System\ado\msado15.dll.

Seems like the same path to me. (Though this looks like XP64 path, amirite?)

> On my Windows 7 machine, I have tried changing the directory path to from
> %CommonProgramFiles(x86)% to C:\Program Files (x86)\Common Files in the
> aforementioned registry key and now Win32::OLE->new('ADODB.Connection')
> works, albeit opening a DB connection would require a whole host of other
> similar registry changes (I do not recommend this, I just did it as a test).

> I am hoping that someone knows how to fix this or knows a workaround?

I don't know how to fix it, but I hope my questions could shine some light on
your issue.


--
WBR,
Andrey Repin (anrdaemon@freemail.ru) 25.01.2012, <05:07>

Sorry for my terrible english...


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]