NAME
Sys::Manage::Desktops - Centralised management for desktop computers
SYNOPSIS
- Script
-
use Sys::Manage::Desktops;
my $s =Sys::Manage::Desktops->new(-option=>value,..);
$s->set(-option=>value,..); # See
Script Configuration$s->{
-dla} =[{-option=>value,..} # SeeAssignment Parameters,...];$s->Run(@ARGV); # See
Command line - Command line
-
perl
Script.pl run-mode argscommand line may be used (with appropriate run mode) as
startup,shutdown,logon,logoffscript.Maintenance command line 'perl
Script.plrefresh' is to be used against management computer only.See
Run Modes.
DESCRIPTION
- Description
-
This is a core module for script implementing assignments of commands to be executed on desktop computers.
The
Scriptmay define and organise commands or scripts to be executed everystartup,logon,logoff,shutdown, as described with-under. Commands may be addressed to particular computers, users, groups. User will not be asked to agree with anystartup,logon,logoff,shutdown.The
Scriptmay provide assignments of commands to be executed once,-under'system' or 'user', within appropriateRun Modes:startup,logon,runapp,agent. Assignments may be addressed to particular computers, users, groups. The assignments to be executed will be listed for user to agree. The assignments will be executed only when user agrees (or-atoy). The execution of assignment may interact with user.The recurrent and non-recurrent assignments are unified and may be distinguished with
-undervalue: Recurrent assignments:startup,logon,logoff,shutdown. Non-recurrent assignments: 'system', 'user'.The organising means includes lists of assignments to be previously executed (
-doid); computers, users and groups assignments to executed for (-nodes,-users).The debug and correcting means includes time-based redo of assignment (
-doop); agent remote activation and changing periodicity (agent say).This module does not assumes anything about repository of commands or scripts.
Sys::Manage::Cmd module implements assignments, but synchronous and without interaction to user.
RUN MODES
- Run Modes
-
Maintenance or management run modes:
queryto list assignments;refreshto be used against manager computer only;agent sayto be used from manager side.Desktop or agent run modes may be used against desktop or agent system:
startup,logon,agent,runapp,logoff,shutdown.Scriptic run modes may be used to define or organise appropriate scripts:
startup,logon,logoff,shutdownfor desktop or agent system. See alsostartup1andlogon1Script Modes.Run modes to check or execute assignments (with appropriate
Assignment Modes) on desktop or agent system:startupandagentto executesystemassignments;logonandrunappto checksystemand to executeuserassignments.Windows 95/98:
startupexecuted inlogon;agent,logoff,shutdownunimplemented.Windows 2000/XP: all
Run Modesimplemented;agentuses 'at' Scheduler commands, may be activated via 'startup period' command line. - agent (start | stop | loop | apply) ?minutes
-
Periodical agent operation.
systemassignments may be executed.userassignments may be checked, if possible.This item is very platform dependent, see
Limitations, Bugs, Problems. - agent say
- agent say node ?minutes
- agent say node -redo assignmentId
- agent say node -unreg assignmentId
- agent say node agent action...
-
Activate agent from manager via Sys::Manage::Conn(
-conn). Default action is 'agentloop'. Immediate actions '-redo' and '-unreg' may be used instead of assignment with-doop=> [[-redo=>id] || [-unreg=>id]]. Seeagentfor other actions available, i.e. 'agentstop'. - logoff
-
Execute logoff scripts
- logon
-
Execute
logonscripts (-under=> 'logon'), then user level assignments (-under=> 'user') may be executed. Complete with post-logon scripts (-under=> 'logon1'). - query
-
query runmode|'undef'|'' ?node|'undef' ?user|'undef'Queries assignments database, displays result. Maintenance run mode.
- refresh
- refresh pressing
-
Maintenance run mode, to be executed against manager only. Refreshes application startup scripts, etc. See also
runapp,-mcf,-fresh. - runapp
-
Application startup operation. The
Scriptis called if-freshfrom application startup script generated byrefreshfor-mcf.systemanduserassignments will be checked,userassignments may be executed. - shutdown
-
Execute shutdown scripts
- startup
-
Execute startup scripts (
-under=> 'startup'), then system level assignments (-under=> 'system') may be executed. Complete with post-startup scripts (-under=> 'startup1'). - startup period
- startup agent
- startup agent start period
-
Execute
startup, startagent, if appropriate.
SCRIPT MODES
- Script Modes
-
-underassignment parameter may be used to definestartup,logon,logoff,shutdownscripts, and also post-startupand post-logonscripts.Post-
startupscripts will be executed afterstartupscripts andstartupsystemassignments.Post-
logonscripts will be executed afterlogonscripts andlogonuserassignments. - logon1
-
-under=> 'logon1'Post-logon scripts to complete
logonprocess. - startup1
-
-under=> 'startup1'Post-startup scripts to complete
startupprocess.
ASSIGNMENT MODES
- Assignment Modes
-
-underassignment condition may be one ofRun Modes,Script Modes, orAssignment Modes.Assignments under
Run ModesandScript Modesare executed at each run of theScript.Assignments under
Assignment Modesare executed once during appropriateRun Modes:startup,logon,agent,runapp.System level assignments (
-under=> 'system') will be executed before user level assignments (-under=> 'user') if possible (this is platform dependent).See also
Description,Run Modes. - system
-
-under=> 'system'The assignment should be executed under
systemsession with considerable permissions. Users profiles may be affected via something likew32regenu. - user
-
-under=> 'user'The assignment should be executed under
usersession with permissions of the user and user's profile available.
SCRIPT CONFIGURATION
- Script Configuration
-
Maintenance run mode (
refresh) may need special values for:-dirmcf.The most commonly used parameters are:
-banner,-support,-mgrcall,-dirmcf,-dhu,-dhn,-dla,-xnodes,-xusers - -atoy
-
=> 30 # secUser assent timeout during
startupandlogon. User can agree immediate or agree will be implied past timeout. -
=> "Centralised management for desktop computers\n"Text to display starting execution. See also
-lang,-support. - -conn
-
=> empty || {-option => value} || config file nameConfiguration for Sys::Manage::Conn object to be used for
agent say. - -dhn
-
=> undef || {node name => [group names]}Node groups database, used to match assignment
-nodes. If undefined, OS system catalogue may be used and slow performance. If-dlatext file, may be reassigned from its-dhnrows when matched. See also-dhu. - -dhu
-
=> undef || {user name => [group names]}User groups database, used to match assignment
-users. If undefined, OS system catalogue may be used and slow performance. If-dlatext file, may be reassigned from its-dhurows when matched. See also-dhn. - -dircrs
-
=> $ENV{SystemRoot} .'\\' .$s->{-prgcn} || '/var/' .$s->{-prgcn}Path to
systemclient/agent registrations of assignments. Eachsystemassignment executed will be registered as a file named according to assignment-idunder this path. An assignment may be duplicated also inward-dirmrs. - -dircru
-
=> $ENV{AppData} .'\\' .$s->{-prgcn} || $ENV{HOME} .'/' .$s->{-prgcn}Path to
userclient/agent registrations of assignments. Eachuserassignment executed will be registered as a file named according to assignment-idunder this path. An assignment may be duplicated also inward-dirmru. - -dirmcf
-
=> '%LOGONSERVER%\\NetLogon\\' .$s->{-prgcn} .'-mcf'Path to menu command files or application startup scripts for
-mcfandrefresh. - -dirmls
- -dirmlu
-
=> undef || 'directory' for 'node/id' or 'node-user/id' files || file path mask 'directory/[n][-u]/[f][e]' || file path mask 'directory/[n]/[f][-ul][e]' || ...File paths for log files on manager. Will be assigned to
$ENV{SMLOG}forstartup,logon,logoff,shutdownscripts. Subdirectories will be created when required. Path mask may be used with symbols following:[SignValSign] - value with optional markup signs, value may be: n - node name, u - user name, us - user name or 'sys', ul - user name or getlogin(), uw - user name or getlogin() on Windows 95/98, else 'sys', f - file name (assignment id), e - file name extension, including '.' - -dirmrs
- -dirmru
-
=> undef || see '-dirmls' and '-dirmlu'File paths to duplicate
-dircrsand-dircruregistrations to inform manager. Subdirectories will be created when required. See-dirmlsand-dirmlufor path mask. Consider synchronisation procedure globing mask to be obtained using replacement of '[f][e]' symbols with '*'. Avoid mixing-dirmls,-dirmrs,-dirmlu,-dirmrufiles in the same directories or carefully consider naming of files. - -dla
-
=>[{id=>'identifier',...}, ...] | 'file name'Assignments and commands database to find assignments/commands to be executed. See also
Assignment Parameters.Assignments database may be a perl data structure (array ref) or a text file. Text database format:
# comment row ... -hostdom=>'all' | 'domainName' # domain for rows below ... -dhn=>['node name','group name',...] # node groups ... -dhu=>['user name','group name',...] # user groups ... -id=>'name' # starting assignment -attr=>value # parameter of assignment, use perl syntax for value ... - -domain
-
=> domain nameDomain of the user current, see also
-user. - -errhndl
-
=> 0 | 1 | sub{}Error handler on $SIG{__DIE__}.
- -host
-
=> host nameFull DNS name of the computer current, see also
-node - -hostdom
-
=> host domainDomain part of the
-host. - -lang
-
=> 'en' | 'ru'Language of user. See also
-banner,-support - -mgrcall
-
=> "perl $0"Management script call from desktop (agent) systems. To be used for
agentandrefresh(-mcf,-fresh). - -node
-
=> node nameNode name of the computer current, may be short of the
-host. - -prgcn
-
=> 'Sys-Manage-Desktops'Program class name, used to construct another names.
- -runmode
-
=> ''Run mode, see
Command line,Run Modes. - -runrole
-
=> '' | ('mngr' | 'manager') | ('agent' | 'desktop') | 'query'Scriptrun role to limitRun ModesinRun() to management or maintenance, agent or desktop, query. This may be useful programmatically limiting domain of theScriptfor parcticular nodes (i.e.w32dcforw32srv) or users. - -smtpsrv
-
=> not exists || 'smtp server name' - -smtpeto
-
=> not exists || ['e-mail address',...]SMTP server name (for
smtpsend) and addressee list to receive errors. May be useful while-yerr. - -support
-
=> "Call support or press 'Enter' finishing"Text to display finishing with error(s). See also
-lang,-banner. - -user
-
=> user name - -uadmin
-
=> is admin user? - -usystem
-
=> is system user?User current, see also
-domain,-node. - -xnodes
- -xusers
-
=> undef || 'name' || ['name',...]Exclusive nodes and users assignments should not be executed to.
- -yasg
-
=> undef || booleanAssume 'yes' to execute assignments during
startupandlogon, do not ask user. - -yerr
-
=> undef || booleanAssume 'yes' confirming error messages, do not ask user. May be used along with
-smtpeto.
ASSIGNMENT PARAMETERS
- Assignment Parameters
-
Assignments and commands are organised in assignments database,
-dla.The most used parameters of assignment are:
-id,-cmt,-under,-nodes,-users,-do,-doid,-doop. - -cmt
-
=> comment stringDescription of assignment.
- -cnd
-
=> empty | sub{}(self, assignment)Execution condition. More preferred is using
-nodes,-users,-doid,-doop. - -do
-
=> empty | command line | ?! command lineCommand line to be executed to apply assignment.
Optional starting char may be used to interpret exit code: '?' - success if 0, '!' - success if not 0. Default operation ignores exit code.
Embedded 'do perl-script-file' comand evaluates file given as sub{}(self, assignment). Some of
Methodsmay be called. Empty result will be considered as faiure. - -doid
-
=> empty | assignment id | [assignment id,...]Assignments to be executed before this assignment. Will be listed to user to agree.
- -doop
- -doop1
-
=> empty | [[-operation => assignment id],...]Operations to be executed before (
-doop) and after (-doop1) this assignment, but not listed to user. Operations available:-unreg => id - unregister assignment
-unreg => id, time-string - unregister if registered before time specified
-redo => id, time-string - unregister and execute again, if registered before time specified
-unmenu => id - delete
-menuand-mcfitems from menuThe
-unreg=>(id, 'yyyy-mm-dd hh:mm:ss') and-redo=>(id, 'yyyy-mm-dd hh:mm:ss') operations of-doopmay be used effectively in debug procedures. The assignment of this operation only will not be registered, may be executed repeatable with different time specified, will be listed to user only when applicable. - -fresh
-
=> empty | assignments overcoveringIf this assignment is overcovered by newer assignments. Used only in
refreshto include-mgrcallinto menu command files for-mcfitems. - -id
-
=> unique identifierUnique identifier of assignment and name of registration file.
- -last
-
=> empty | trueRequests user to restart computer, breaks execution of the list of assignments.
- -mcf
-
=> empty | [{param => value,..},..]Menu items to be creted for execution via command files. The
-mcfoptional parameter with-iddescribes the name of command file within-dirmcf. See-menufor another details,refreshand-freshfor usage.This item is very platform dependent, see
Limitations, Bugs, Problems. -
=> empty | [{parameter => value,..},..]Menu items to be created, see also
-mcf. 'Name' parameter contains menu item name.Platform dependent. For Windows see Win32::Shortcut and it's parameters: 'Path', 'Arguments', 'WorkingDirectory', 'Description', 'ShowCmd', 'Hotkey', 'IconLocation', 'IconNumber'. 'Name' may be started with 'Programs', 'Desktop' or 'Startup' subdirectory term. For
systemassignments will be used 'All Users' menu, foruserassignments will be used current user menu.This item is very platform dependent, see
Limitations, Bugs, Problems. - -nodes
-
=> empty | 'none' | 'name' | [name,...]On which nodes (computers) assignment should be executed (except
-xnodes). May be used group names from-dhn. Empty value means all nodes; 'none' value allows execution only via-doidor-doop. - -since
-
=> empty | 'yyyy-mm-dd hh:mm:ss'Date-time since assignment should be executed.
- -under
-
=> empty | 'system' | 'user' | 'startup' | 'logon' | 'logoff' | 'shutdfown'How to execute assignment: at each
startup,logon,logoff,shutdown, or once underuserorsystemsession. Empty value treated assystem. See alsoRun Modes,Assignment Modes. - -users
-
=> empty | 'none' | 'name' | [name,...]For which users assignment should be executed (except
-xusers). May be used group names from-dhu. Empty value means all users; 'none' value allows execution only via-doidor-doop.
ENVIRONMENT VARIABLES
- Environment Variables
-
May be used in command lines to be executed.
- $ENV{SMID}
-
ID of the assignment running.
- $ENV{SML1}
- $ENV{SML2}
-
First and last parts of file path to upload to manager. Obtained using
-dirmlsor-dirmlu. Forstartup,shutdown,logon,logoffscripts this is$ENV{SMLOG}broken on$ENV{SMID}. - $ENV{SMLOG}
-
Registration file path and name, may be used for output of the command. May contain blanks and may need to be quoted in command lines, i.e. cmd.exe /c dir c:\\>>"%SMLOG%". For
startup,shutdown,logon,logoffscripts this is log file name formed using-dirmlsand-dirmlu.
METHODS
- Methods
-
Useful for
Script:new,set,fread,w32dcf/w32srv,RunUseful for
-do=> 'do perl-script-file':fcopy,fedit;w32olenew,w32oleget,w32olein;w32registryandw32regenu;w32wmiqandw32wmiqf;acRegDel,acRegRen,meDel;echo,error; and othersMost of methods will die if fail. So, success/failure return value is often not needed.
- acReg ({assignment}) -> fwrite() | die
- acReg ({assignment}, string,...) -> fwrite() | die
-
Assignment call registration.
acReg({assignment}) creates registration file usingfwrite(),acReg({assignment}, string,...) appends strings to this file. - acRegDel ({assignment}) -> unlink() | die
- acRegDel ({assignment}, ? max mtime string) -> unlink() | die
-
Assignment call registration delete. Deletes registration file using
unlink(), returns 0 if there is nothing to be deleted. Maxmtimeof the registration file to be deleted may be specified as 'yyyy-mm-dd hh-mm-ss'; registration file will not be deleted if itsmtimeis greater then specified. - acRegRen ({assignment}, extension) -> rename() | die
-
Assignment call registration rename. Renames registration file to new extension using
rename(). I.e.acRegRen({...},'.err'). -
Print header.
- echo (args) -> print (args).
-
Output to user. Alike
print(). - error (message) -> die
-
Failure exit.
- fcopy (?-opt, source file | dir | dir mask, target file | base dir | dir, condition sub(self, source, target){}) -> copied | die
- fcopy (source file, target file)
- fcopy (source file, target base dir)
- fcopy (source dir, target base dir)
- fcopy (source dir/mask, target dir)
-
Copy files and directories. Options: 'i'gnore errors; 'r'ecurse (default); 's'tat[mtime] to escape superfluous operation; 'v'erbose.
- fedit (file, sub(self, file, $_=content){} -> new content) -> fwrite() | die
-
Edit file. Loads file using
fread(file), executes editor sub{} to achieve new content, stores content changed usingfwrite(file). - ffind (?-opt, path, sub{}(self, full, dir, elem=$_))
- ffind (?-opt, path, false, post sub{}(self, full, dir, elem=$_))
-
File find. Post processing is to see a directory after it's contents. Options: 'i'gnore errors; 'r'ecurse (default).
- fglob (path with mask) -> (dir list) | die
-
Directory listing.
- fpthtmp (?{assignment}, ?mkdir) -> temp dir may be created
-
Path to temporary directory for
Scriptor assignment. The second parameter is boolean to create directory if not exists. See alsoftmp. - fread (?'-b', file name) -> content | die
-
Reads file, returns it's content as a scalar.
- frun (?-opt, command, arg,...) -> success
- frun (?-opt, 'do', script file, arg,...) -> result
-
Execute command or Perl script. Options: 'e'xit code / result consider; 'i'gnore errors; 'v'erbose.
- ftmp (?assignment, ?pid) -> temp file name
-
Temporary file for
Scriptor assignment. See alsofpthtmp. - fwrite (?'-b', file name, string,...) -> true | die
-
Writes strings joined with "\n" to file.
- meDel ({assignment}) -> true | die
-
Deletes user shell menu elements (
-menu,-mcf) for assignment. - meStore ({assignment})
-
Creates user shell menu elements (
-menu,-mcf) for assignment. - new (-option => value,..) -> object
-
Constructor to create new object.
- nnames () -> [node names]
-
Individual and group names of the computer.
- Run (command line args)
-
Executes
Script Configurationassigned byScript. - runmngr (command line args) -> as manager?
-
Tests if run as manager ('',
refresh,query,agent say). - runuser (command line args) -> as user?
-
Tests if run as user (
logon,logoff,runapp). - set () -> (slot names of the object)
- set (-option) -> value of the option given
- set (-option=>value,...) -> self object
-
Retrieves and sets values of the
Script Configuration. $s->{-option} direct access may be used also, butsetadditionally processes some options. - unames () -> [user names]
-
Individual and group names of the user.
- w32ADSystemInfo () -> IADsADSystemInfo object
- w32ADComputer () -> IADsComputer object
-
Windows 2000. Access to ADSI objects, see MSDN for details. Example: w32ADSystemInfo->{DomainShortName}
- w32dcf () -> netlogon scripts dir if DC
-
Windows 2000 DC. Path to 'scripts' subdirectory in 'netlogon' share if domain controller. See also
w32srv. - w32nuse () -> 'net use' text
- w32nuse (drive) -> network path used
- w32nuse (?-opt, drive, path, ?opt,...) -> drive used
- w32nuse (?-opt, drive, '/d') -> delete drive
-
Windows 'net use' command clever execution. Options: 'i'gnore errors; 'v'erbose.
- w32olenew (progid, ?destructor) -> object | die
-
Win32. Win32::OLE->new(args) call (may be known also as 'CreateObject'). 'Scripting.FileSystemObject', 'WScript', 'WScript.Shell', 'WScript.Network' objects may be created.
- w32oleget (moniker, ?destructor) -> object | die
-
Win32. Win32::OLE->GetObject(args) call.
- w32olein (object) -> enumerated
-
Win32. Win32::OLE::in(object) call.
- w32oleerr () -> last error message string
-
Win32. Win32::OLE->LastError() formatted.
- w32registry (?key) -> {registry}
-
Win32. $Win32::TieRegistry::Registry wrapper.
- w32regenu (sub(self, key name, $_ ={key hash}, profile dir){})
-
Win32 (Windows 95 not recommended). Enumerates users registry files for sub{} given. Calls sub{} with relevant Win32::TieRegistry subtree for each user profile. May be useful for
systemassignments affecting user profiles. - w32srv () -> is Windows Server
-
Win32. Returns true for Windows server or domain controller. See also
w32dcf. - w32umnu ('mpdiv', item name, option => value)
- w32umnu ('mpdiv', -w32umnu subdir name)
- w32umnu ('iv', filter sub{}(ffind args))
-
Win32 User Menu definition (start 'm'enu, 'p'rograms, 'd'esktop).
w32umnu('mpd') creates a menu item from Win32::Shortcut parameters or items from subdirectory of-w32umnubase path.w32umnu('', sub{}) unlinks items found byffind, but not mentioned. Additional options may be 'i'gnore errors and 'v'erbose. - w32wmiq (class | query) -> SWbemObjectSet
- w32wmiqf (class | query) -> first object
- w32wmiqf (class | query, iterator sub(self, $_ = object){})
-
Win32. Access to WMI executing query and fetching object(s) via Win32::OLE::in(
w32oleget('winmgmts:{impersonationLevel=impersonate}!//node/root/cimv2')->ExecQuery(query | 'select * from class')). Where class may be 'Win32_OperatingSystem', 'Win32_ComputerSystem', etc, see MSDN for details. Examples: w32wmiqf('Win32_OperatingSystem')->{ProductType}, w32wmiqf('Win32_ComputerSystem')->{Model}.
EXAMPLES FOR WINDOWS
- Smserver.bat
-
Defines single management server across domain in %SMSERVER% environment variable. Should be placed inside 'Netlogon' share on domain controller.
@rem Defines single management server in the domain. @rem Smserver.bat - echoes %SMSERVER%. @rem Smserver.bat command line - executes command line with %SMSERVER% defined. @rem Use ^%SMSERVER^% notation in command line. @set SMSERVER=\\servername @if "%1" == "" @echo %SMSERVER% @if not "%1" == "" call %* - Smserver.pl
-
Scriptimplementation. Should be placed inside 'Netlogon' share on domain controller.#!perl -w my $script =Win32::GetFullPathName($0); my $domain =eval('use Net::Domain; Net::Domain::hostdomain') ||Win32::DomainName() ||$ENV{USERDOMAIN}; my $spath =$script =~/^(.+?)[\\\/][^\\\/]+$/ ? $1 : $ENV{LOGONSERVER} ? "$ENV{LOGONSERVER}\\NetLogon" : "\\\\$domain\\NetLogon"; eval{require ("$spath\\Desktops.pm")} ||eval{require Sys::Manage::Desktops} ||die('Cannot load Sys::Manage::Desktops'); my $s=Sys::Manage::Desktops->new(-errhndl=>1); if (!$ENV{SMSERVER} # %SMSERVER% read || ($ARGV[0] && ($ARGV[0] =~/^(?:startup)/))) { $s->fread("$spath\\SMServer.bat") =~/set\s*SMSERVER\s*=\s*([^\r\n\s]+)/ ? $ENV{SMSERVER} =$1 : $s->error("Missing %SMSERVER%\n"); } if ($s->w32dcf()) { # DC - Run on Manager $s->set( -mgrcall=> "perl.exe \\\\$domain\\NetLogon\\" .$s->{-prgsn} ,-dirmcf => "$ENV{SMSERVER}\\SMShare" ); } else { # Agent Run $s->set( -mgrcall=> ($ENV{PERLPATH}||'') ."perl.exe $script" ,-dirmcf => "%SMSERVER%\\SMShare" ); } $s->{-runrole} =$s->w32srv() # Limit agent to desktops ? 'mngr' : ''; $s->{-dla} ="$spath\\smserver.txt"; # Assignments Database $s->Run(@ARGV); # Evaluate $ARGV[0] operation - Group Policy
-
To configure
startupandlogonscripts.Security: user, computer$: Apply Options: Computer Configuration / Windows Settings / Scripts Startup = ..\..\..\..\..\Scripts\SMServer.bat perl ^%0\..\smserver.pl startup agent Computer Configuration / Administrative Templates / System / Scripts Run Startup Scripts Visible = + Maximum wait time for Group Policy scripts = (default=600 sec) User Configuration / Windows Settings / Scripts Logon = ..\..\..\..\..\Scripts\SMServer.bat perl ^%0\..\smserver.pl logon User Configuration / Administrative Templates / System / Scripts Run Logon Scripts Visible = +
LIMITATIONS, BUGS, PROBLEMS
- Limitations, Bugs, Problems
-
This module is implemented and tested with Perl 5.6.0 and 5.8.8 on Windows 2000/XP.
Implementation predominantly for Windows desktops, espacially
-menuand-mcf,agent, 'w32' functions.Linking
systemanduserassignments with-doidor-doopis undesirable.Mixing
systemassignments with-userscondition is undesirable, however-nodescondition may be inuserassignments.Startup or logon scripts may be liable to timeouts or may became hidden from user, so response timeouts used interacting with user.
See also at the top of the source code.
VERSION
- '2008-08-12'
-
Extended
fcopy(). Documentednnames() andunames(). Newrunmngr(),runuser(),frun(),ffind(),w32nuse(). - '2008-05-20'
-
Added
-hostdom=>'all' | 'domainName' markup for-dlatext file. - '2008-03-03'
-
Publishing 0.59.
Opening of upload directory added to prevent network connection lose on Windows.
- '2007-12-27'
-
Publishing.
- '2007-11-30'
-
Testing...
- '2007-10-24'
-
Documentation written.
- '2007-10-04'
-
Started.
LICENSE
This is free software; you can use redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
Andrew V Makarow <makarow at mail.com>, for zhenya
3 POD Errors
The following errors were encountered while parsing the POD:
- Around line 42:
'=item' outside of any '=over'
- Around line 80:
You forgot a '=back' before '=head1'
- Around line 1196:
You forgot a '=back' before '=head1'