http://www.perlmonks.org?node_id=744631

roho has asked for the wisdom of the Perl Monks concerning the following question:

The following code works as expected in Windows XP, displaying colors in CMD window, but I get the error messages below when running in Windows Vista. I am running ActiveState 5.10 and I used ppm to install module Win32::Console::ANSI. I also ran "cpan Win32::Console::ANSI" and it confirmed that the module is up to date. Is there something special that Vista requires for this module to work?

TIA
Roy Fulbright

#!/usr/bin/perl use strict; use warnings; use Win32::Console::ANSI; __END__

I received the following errors:
--------------------------------

Can't load 'C:/Perl/site/lib/auto/Win32/Console/ANSI/ANSI.dll' for module Win32::Console::ANSI: load_file:Invalid access to memory location at C:/Perl/lib/XSLoader.pm line 64. at C:/Perl/site/lib/Win32/Console/ANSI.pm line 65

Compilation failed in require at C:\Bat\ansi.pl line 4. BEGIN failed--compilation aborted at C:\Bat\ansi.pl line 4.

"Its not how hard you work, its how much you get done."

Replies are listed 'Best First'.
Re: Win32::Console::ANSI Not Working in Windows Vista
by jand (Friar) on Feb 18, 2009 at 07:55 UTC
    I haven't looked closely, but I suspect this is due to the way Win32::Console::ANSI is implemented:

    It installs a hook into kernel32.dll for the WriteFile() API and intercepts any bytes written to a console handle to check for ANSI escape sequences. It seems plausible that this heavy-handed method run afoul of improved security mechanisms in Vista.

    You should file a bug report so that the module author can investigate if there is a fix or workaround for this problem.

      It seems plausible that this heavy-handed method run afoul of improved security mechanisms in Vista.

      Yes, that seems plausible. However, I've just built the module (version 1.01) from source on Vista SP1 without any problems. All of the tests ran fine. I used build 1004 of ActivePerl and dmake/MinGW.

      The fact that I'm using SP1 might be significant (unless the op has also installed SP1).

      Cheers,
      Rob
        Yes, I'm also using SP1. I may have to build the module from source as you have done if the alternate repository suggested by Anon does not work out.

        Thanks,
        Roy

        "Its not how hard you work, its how much you get done."

        I've just built the module (version 1.01) from source on Vista SP1 without any problems

        Well ... I *thought* the terminal I was using was connected to a Vista SP1 box, but it was in fact connected to an XP box.

        It turns out I *can't* build Win32-Console-Ansi-1.01 on Vista SP1. I get the same error as reported by the op.

        I'll notify both roho and jand (via /msg) of my embarrassing mistake, and then submit a bug report about this to rt.cpan (unless the bug has already been reported).

        Cheers,
        Rob
Re: Win32::Console::ANSI Not Working in Windows Vista
by Anonymous Monk on Feb 18, 2009 at 04:12 UTC