Schrift
[thread]10899[/thread]

CreateProcessAsUser

Leser: 2


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
tricky
 2007-11-26 19:02
#103077 #103077
User since
2006-03-14
10 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

ich möchte einen Process unter einem anderen User (admin) starten und habe dafür das Modul Win32::AdminMisc mit der Funktion CreateProcessAsUser verwendet.
Leider startet bei mir kein zweites command Fenster.

Die Fehler Meldung Incorrect Funktion hilft mir nicht viel weiter.

Meine Perlversion ist 5.8.8
Mein OS Windows XP Prof.
AdminMisc 0.2003.07.14

Danke für Eure Hilfe im voraus!

Gruß
tricky

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
use Win32::AdminMisc;

my $Domain = "";
my $User = "test";
my $Password = "test";
my $Process = "cmd";


print "\nStarting \"$Process\" as $User in the \U$Domain\E domain...\n\n";
$Result = Win32::AdminMisc::LogonAsUser( $Domain,
$User,
$Password,
LOGON32_LOGON_INTERACTIVE );
if( $Result )
{
$LogonUser = Win32::AdminMisc::GetLogonName();
print "Successfully logged on as $LogonUser.\n";
$Result = Win32::AdminMisc::CreateProcessAsUser(
$Process,
"Flags" => CREATE_NEW_CONSOLE,
"XSize" => 640,
"YSize" => 80,
"X" => 200,
"Y" => 80,
"XBuffer"=> 80,
"YBuffer"=> 180,
"Show" => SW_MAXIMIZE,
"Title" => "\u$User\'s $Process program",
"Fill" => BACKGROUND_BLUE |
FOREGROUND_RED |
FOREGROUND_BLUE |
FOREGROUND_GREEN |
FOREGROUND_INTENSITY );
if( $Result )
{
print "Successful! The new processes PID is $Result.\n";
}
else
{
print "Failed.\n\tError: ", Error(), "\n";
}
}
else
{
print "Failed to logon.\n\tError: ", Error(), "\n";
}

sub Error
{
return( Win32::FormatMessage( Win32::AdminMisc::GetError() ) );
}
GwenDragon
 2007-11-27 15:26
#103131 #103131
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Es könnte sein, dass der Aufruf nicht möglich ist, weil bestimmte Rechte in den lokalen Sicherheitsrichtlinien nicht aktiviert sind und deswegen keine Rechterhöhung erlaubt ist.
Quote
This function requires the calling process to have the following rights assigned:

Privilege Display Name
--------------- -----------------------------------
SeTcbPrivilege.....Act as part of the operating system
SeAssignPrimary....Replace a process level token
SeIncreaseQuota....Increase quotas

http://www.roth.net/perl/adminmisc/#CreateProcessA...
tricky
 2007-11-27 17:42
#103176 #103176
User since
2006-03-14
10 Artikel
BenutzerIn
[default_avatar]
Danke für deine Antwort GwenDragon.

Kannst du mir sagen wo in Windows diese Rechte verankert sind bzw. wie ich sie entsprechend anpassen kann?

Gruß
tricky
GwenDragon
 2007-11-27 17:45
#103179 #103179
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Start
Systemsteuerung
Leistung und Wartung
Verwaltung
Lokale Sicherheitsrichtline

====
WARNUNG:
Aber Vorsicht. Du kannst dir da dein ganzes System löchrig oder unbenutzbar machen, wenn du keine Ahnung hast!
====
tricky
 2007-11-27 21:52
#103190 #103190
User since
2006-03-14
10 Artikel
BenutzerIn
[default_avatar]
Hi,

du hast ins schwarze getroffen, es liegt an den Einstellungen

SeTcbPrivilege.....Act as part of the operating system
SeAssignPrimary....Replace a process level token
SeIncreaseQuota....Increase quotas

Wenn ich diese Rechte entsprechen erweitere tut es.

Ich wollte an Sicherheitsrichtlinien eigentlich auch nichts änderen. Da komme ich mit dem Modul Win32::AdminMisc nicht weiter. Gibt es nicht eine ander Möglichkeit ähnlich wie runas, psexece unter Perl ohne an den Systemeinstellungen etwas zu ändern?
Die genannten Programme funktionieren mit der Standardeinstellung des Systems.
esskar
 2007-11-28 08:03
#103200 #103200
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
bei welchem functionsaufruf kommt denn die fehlermedlung?
tricky
 2007-11-28 08:58
#103201 #103201
User since
2006-03-14
10 Artikel
BenutzerIn
[default_avatar]
den Fehler "Incorrect Funktion" bekomme ich beim Aufruf von Win32::AdminMisc::CreateProcessAsUser. Ohne die Rechte entsprechend wie von GwenDragon geschrieben erweitert zu haben.
Die Funktion Win32::AdminMisc::LogonAsUser (mit entsprechenden User/Passwort) läuft in beiden Fällen fehlerfrei.
esskar
 2007-11-28 12:40
#103218 #103218
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
versuch mal, dir mit hilfe der
AdjustTokenPrivileges function aus CPAN:Win32::Security::Raw die priviligen zu geben.
die function ist schlecht dokumentiert, aber unter C++ würde ich diese function nutzen!
tricky
 2007-11-28 22:42
#103239 #103239
User since
2006-03-14
10 Artikel
BenutzerIn
[default_avatar]
@esskar,
ich gebe dir Recht die Dokumentation ist wirklich dürftig. Was ich gelesen habe hilft es mir bei meinem Problem nicht weiter. Denn ich wollte eigentlich nichts an den Sicherheitsrichtlinien ändern. Mit den bestehenden Einstellungen funktioniert runas oder psexec ohne Probleme.
Ich suche nach einer Möglichkeit diese Funktion (ein Programm unter einem anderen Benutzer zu starten) wie bei runas oder psexec intern in meinem Perlprogramm zu nutzen ohne die externen Programme zu verwenden.

Vielleicht gibt es eine andere Möglichkeit wie Win32::AdminMisc ein Programm mit Perl unter einem anderen Benutzer und Windows zu starten?

Gruß
tricky
GwenDragon
 2007-11-29 11:53
#103247 #103247
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Hmm, mit ShellExecute der WInAPI könnte es gehen.

Ich weiß nicht, ob der Artikel über die Erhöhung der Privilegien vielleicht weiter hilft:
http://blogs.msdn.com/vistacompatteam/archive/2006...
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2007-11-26 19:02.