note
esskar
well, this node is rather old but we hat a smillar problem at perl-community.de
here is the code i came up with.
<code>
#!/usr/bin/perl
use strict;
use warnings;
package Win32::LSA;
use base qw/Win32::API::Interface/;
__PACKAGE__->generate( "Advapi32.dll", "LogonUserA", "PPPIIP", "I", "logon_user" );
__PACKAGE__->generate( "Advapi32.dll", "ImpersonateLoggedOnUser", "I", "I", "impersonate_as" );
__PACKAGE__->generate( "Advapi32.dll", "RevertToSelf", "", "I", "revert" );
1;
use Win32 ();
my $token = "\0" x 4;
my $lsa = Win32::LSA->new;
my $rc = $lsa->logon_user( $ENV{USER}, $ENV{DOMAIN}, $ENV{PASS}, 5, 0, $token);
die Win32::FormatMessage( Win32::GetLastError ) unless $rc;
print "Logon success\n";
$rc = $lsa->impersonate_as( unpack 'L', $token );
die Win32::FormatMessage( Win32::GetLastError ) unless $rc;
print "Impersonate success.\n";
# Place your code here
$rc = $lsa->revert;
die Win32::FormatMessage( Win32::GetLastError ) unless $rc;
</code>
HTH
185732
185732