Perl脚本,用于以另一个用户无法正常工作的方式启动进程

时间:2019-05-26 17:42:02

标签: windows apache perl

我有一个使用Win32 :: API和命令CreateProcessWithLogonW的Perl脚本,以便以另一个用户身份启动进程。但是,当我从浏览器运行此脚本时,服务器屏幕上会出现以下错误消息:

“应用程序无法正确启动(0xc0000142)。单击“确定”以终止应用程序。”

但是,我发现,如果我停止Apache作为服务并直接通过双击httpd.exe来启动它,则我的perl脚本可以正常工作。当Apache作为服务运行时,如何使它工作?

我的代码如下:

#!C:\usr\bin\perl
use CGI::Carp qw(fatalsToBrowser);
use Win32::API;

sub A2W{ pack 'S*', unpack 'C*', $_[0] }

my $CreateProcessWithLogon = new Win32::API('advapi32.dll', 'CreateProcessWithLogonW', ['P','P','P','P','P','P','P','P','P','P','P'],'N') || return $^E;

my $si = pack('LLLLLLLLLLLL SS LLLL',68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1|0x100, 1, 0, 0, -1, -1, -1);

my $num=$CreateProcessWithLogon->Call(
    A2W( 'username' ),
    A2W( '\\.\ ' ),
    A2W( 'password' ),
    0,
    0,
    A2W( 'myprocess' ),
    0,
    0,
    0,
    $si,
    chr(0) x 100
) or die $^E;

print "Content-type:text/html\n\n";
print $num;

0 个答案:

没有答案