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

Hi,

I need to verify the user ID my Perl script is running under - is this what is returned by Win32::LoginName()?

Also I have general Windows scripting question: my Perl script is being launched in a .bat file (by an automated system) - will it be run under the same ID as the .bat file is?

thanks,
Q

Replies are listed 'Best First'.
Re: ID of current process (Windows)
by meetraz (Hermit) on Jun 16, 2004 at 13:59 UTC
    Yes, your perl script will run under the same user account as your batch file. To get the username, you can use $ENV{USERDOMAIN} and $ENV{USERNAME} or Win32::LoginName()
Re: ID of current process (Windows)
by data64 (Chaplain) on Jun 16, 2004 at 13:56 UTC

    $ENV{'USERNAME'} gives me the username of the current user account on Win2K and WinXP. Not sure about Win9X.

      Incidently, this assumes that you can trust the current environment. I'm not sure about his application, but someone could just do a set USERNAME=fake_name, and foobar his code. Not to mention if he's using RunAs or somesuch, I have no idea how the Windows environment handles that.

      His use of Win32::LoginName() appears to have been correct.

      From the Win32 pod:

      Win32::LoginName() Returns the username of the owner of the current perl process.

      Tested on Windows XP here, it does what it claims. So yeah, I'd say Win32::LoginName() is what he's looking for.

      Update:Converted pre tags to code tages.