webForumDet fria alternativet

windows account create problem

2 svar · 461 visningar · startad av Tulork

TulorkMedlem sedan aug. 2004903 inlägg
#1

Hej!

Har ett problem med ett script, det är såhär att genom detta scriptet ska man kunna lägga till ett konto i windows.

Har installerat perms och lanman.
Jag får inte äns igång scriptet, och det ska fungera...

#!/usr/bin/perl

# Application to log user shit into a plain textfile.
use Win32::Lanman;   # for account creation
use Win32::Perms;    # to set the permissions on the home directory

$homeNTdirs = "C://Documents and Settings//";    # home directory root dir, adapt to your system

sub CreateNTAccount{
    #my $result = 0;
    my ($account,$record) = @accarray;#@_;

    # create this account on the local machine
    # (i.e. empty first parameter)
    $result = Win32::Lanman::NetUserAdd("",
			               {'name'      => $account,
					'password'  => $record->{password},
					'home_dir'  => "$homeNTdirs\\$account",
					'full_name' => $record->{fullname}});
    return Win32::Lanman::GetLastError() unless ($result);

    # add to appropriate LOCAL group (first get the SID of the account)
    # we assume the group name is the same as the account type
    die "SID lookup error: ".Win32::Lanman::GetLastError()."\n" unless
      (Win32::Lanman::LsaLookupNames("", [$account], \@info));
    $result = Win32::Lanman::NetLocalGroupAddMember("",$record->{type},
						       ${$info[0]}{sid});
    return Win32::Lanman::GetLastError() unless ($result);

    # create home directory
    mkdir "$homeNTdirs\\$account",0777 or
      return "Unable to make homedir:$!";

    # now set the ACL and owner of the directory
    $acl = new Win32::Perms("$homeNTdirs\\$account");
    $acl->Owner($account);

    # we give the user full control of the directory and all of the
    # files that will be created within it (hence the two separate calls)
    $acl->Allow($account, FULL, DIRECTORY|CONTAINER_INHERIT_ACE);
    $acl->Allow($account, FULL,
                          FILE|OBJECT_INHERIT_ACE|INHERIT_ONLY_ACE);
    $result = $acl->Set();
    $acl->Close();

    return($result ? "" : $result);
}
CreateNTAccount;
JojoxxMedlem sedan juni 20004 308 inlägg
#2

Koden ser ut att vara saxad direkt ur ett exempel och är inte ett komplett script. Har du laddat hem och installerat win32::lanman och win32::perms (eller egentligen bara win32::lanman) kan du skapa ett konto så här:

use Win32::Lanman;
use Win32::Perms;

$homeNTdirs = "C:\\Documents and Settings";
$account = "kalle";
$password = "mypassword";
$fullname = "Karl Andersson";

$result = Win32::Lanman::NetUserAdd("",
	{'name'      => $account,
	'password'  => $password,
	'home_dir'  => "$homeNTdirs\\$account",
	'full_name' => $fullname});
die Win32::Lanman::GetLastError() unless ($result);
print "Kontot $account skapat";

Har inte hållit på direkt mycket med dessa moduler, bara laddat hem och provat. Egentligen skall du kolla så att kontot inte redan finns, tilldela grupptillhörigheter, etc. Det kan man säkert skriva en mindre uppsats om, men det är inte mitt bord :)

TulorkMedlem sedan aug. 2004903 inlägg
#3

Tack Jojoxx. Detta tillhör ett skolarbete, men vi löste det på ett annat sätt. Koden fick vi från vår lärare och det är han som har saxat den....

I projektet ingår det att Kunna skapa ett windows konto, deleta det, skapa ett unix konto, deleta det. Ett meny system, en databas som alla användare lagras i och en databas där det står vilka som blivit deletade. Samt så ska detta ligga i separata filer. Och först av allt så ska det finnas en funktion som känner av vilket operativsystem som som körs på maskinen och sen ska den hoppa till rätt subrutin i nån utav filerna beroende på operativsystemet.

Create accout win är klart
Delete win account är klart
Create unix account Klart
Delete unix Account är klart
Operativsystems avkännaren är klar
Alla subrutiner är klara
Menyn är klar

Det som fattas är själva ihop bakningen av allt... vilket verkar vara den jobbigaste biten :(

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)