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

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

Hi

I need to impersonate another user in my network and run a process under the impersonating user. I could only find the CreateProcessAsUser function in Win32::AdminMisc as a module which can help establish this. Is there any other method. Also ran the code below but i am not able to get results

use Win32::AdminMisc; use Win32; $Domain='con'; $User='administrator'; $Password='**********'; $Process = "cmd /c \"type c:\\autoexec.bat\""; if (Win32::AdminMisc::LogonAsUser($Domain, $User, $Password, LOGON32_L +OGON_INTERACTIVE)) { print "Successfully logged on.\n"; print "\nLaunching ...\n"; $Result = Win32::AdminMisc::CreateProcessAsUser( $Process, "Flags", CREATE_NEW_CONSOLE, "XSize", 640, "YSize", 400, "X", 200, "Y", 175, "XBuffer", 80, "YBuffer", 175, "Title", "Title: $User" . "'s $Pr +ocess program", "Fill", BACKGROUND_BLUE | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY | FOREGROUND_GREEN, ); if ($Result) { print "Successful! The new PID is $Result.\n"; } else { print "Failed.\n\tError: " . Win32::FormatMessage(Win32::Admin +Misc::GetError()) . "\n"; } } else { print "Failed to logon.\n\tError".Win32::AdminMisc::GetError(); }

But i am getting the following result.. Successfully logged on. Launching ... Failed. Error: The operation completed successfully. Plz help.. How should i provide a value to $Process?