#43336 - 2003-07-25 08:57 AM
Help with printer script - revised
|
NTDOC
Administrator
Registered: 2000-07-28
Posts: 11623
Loc: CA
|
Howard,
Please close the other TOPICS. It is a Starters question, not a General, and I can't use POST PREP in the General forum.
Rbardo,
LOGON.BAT
code:
@ECHO OFF net time \\mail /set /y %0\..\WKix32.exe /i /d %0\..\KIXTART.KIX
Here is an attempt at cleaning up your script some. I have not reviewed or confirmed that any of it works. You need to review and test yourself.
If you DO NOT have any Windows 9x systems to support you do not need to use the %0\..\ parameters for the calling script. You can simply run WKIX32.EXE KIXTART.KIX and your NT/2000/XP/2003 systems will run KiXtart just fine. Also, you would not want to run the /d DEBUG switch with a production script it is only used to help track down problems with the script.
By default, KiXtart automatically looks for a personal script for the current user ("Username.KIX"). If it does not find one, it looks for the default script, "KIXTART.KIX". You can override this behavior by specifying one or more scripts after Kix32.exe on the commandline
Copy the code below and save it as KIXTART.KIX and place it into your NETLOGON folder. Then set your clients to run WKIX32.EXE KIXTART.KIX (for NT systems) Windows 9x does require the %0\..\ in a batch file.
IF @INWIN=1 ; Excludes all Windows 9x systems
IF LocalAdmin ; Only runs if the user has Local workstation admin rights
; Most installers and uninstallers will not run if the user
; does not have Admin rights
$CheckWS=ReadValue('HKLM\Software\MyCompany\WS', 'RANUNINSTALLER')
IF $CheckWS <> 1
IF EXIST('%ProgramFiles%\OfficeView Pro\uninstWS.exe')
SHELL '%COMSPEC% /C %ProgramFiles%\OfficeView Pro\uninstWS.exe /S'
$MarkWS=WRITEVALUE('HKLM\Software\MyCompany\WS', 'RANUNINSTALLER', '1', 'REG_SZ')
; Mark the registry so that this program does not run every time the user logs in
ENDIF
ENDIF
; I assume you are running this PC Asset Navigator program
; http://www.a-navigator.com/an/index.html
USE W: /DELETE /PERSISTENT
USE W: '\\holdem\asset_db$'
SHELL SHELL '%COMSPEC% /C W:\ina32.exe'
USE W: /DELETE /PERSISTENT
ENDIF
ENDIF
; The rest of the script will run for all systems including Windows 9x
USE J: /DELETE /PERSISTENT
USE J: '\\terminal\slip_stream'
$MyDox = '%COMSPEC% /C REGEDIT /S j:\registry\mydox.reg >nul 2>nul'
$HideC = '%COMSPEC% /C REGEDIT /S j:\registry\hide_c.reg >nul 2>nul'
$Outlook = '%COMSPEC% /C REGEDIT /S j:\registry\outlook.reg >nul 2>nul'
; Not sure what this does, but KiX can do all the registry edits natively
USE J: /DELETE /PERSISTENT
use g: '\\ntbaksrv\common'
use i: '\\ntbaksrv\prod'
use k: '\\ntbaksrv\service'
use m: '\\ntserver\sdpcmrpw'
use o: '\\royal\mis'
use y: '\\terminal\share_point'
; use Z: /home ; Don't use this. Map it via the User Manager or AD tools
; Windows 9x Can Not map the Z: drive as the redirector uses this
; drive during the logon process
SHELL '%COMSPEC% /C \\Ntbaksrv\NETLOGON\use.exe'
; The shell command waits until the program completes before returning to the script
; No need to run Printers.kix as a seperate file unless you really want to
;printers.kix:
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dim $priReg, $x, $i, $rc, $ps
$loc='HKEY_CURRENT_USER\Network\LPT1'
$reg='HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion'
$dev=$reg+'\Devices'
$nprt=split(READVALUE($reg+'\Windows','Device'),',')[0]
$sysdrv=SUBSTR('%WINDIR%',1,2)
IF EXIST('H:')
$ps='H:\Scripts_DO_NOT_DELETE'
ELSE
$ps=$sysdrv+'\Scripts'
ENDIF
IF 0=EXIST($ps)
MD $ps
ENDIF
$ps=$ps+'\Printsetup.ini'
$i=0
DO
IF '\\'=LEFT($x,2)
$priReg=$priReg+$x
ENDIF
$x=ENUMVALUE($dev,$i)
$i=$i+1
UNTIL @error
IF LEN($priReg)
$rc=WRITEPROFILESTRING($ps,'Printers','','')
$priReg=split($priReg,'\\')
FOR $i=1 to ubound($priReg)
$rc=WRITEPROFILESTRING($ps,'Printers',$i,'\\'+$priReg[$i])
NEXT
ENDIF
SELECT
CASE INSTR($nprt,'\\') ;WRITE THE DEFAULT PRINTER TO THE CONFIG
$rc=WRITEPROFILESTRING($ps,'Printers','Default',$nprt)
USE LPT1: /delete /persistent
USE LPT1: $nprt /persistent
CASE $nprt='' AND EXIST($ps) ;NO DEFAULT PRINTER, LOAD PRINTERS FROM SAVED INFO
FOR EACH $key IN split(readprofilestring($ps,'Printers',''),chr(10))
$nul=addprinterconnection(readprofilestring($ps,'Printers',$key))
NEXT
$nprt=READPROFILESTRING($ps,'Printers','Default')
$rc=SETDEFAULTPRINTER($nprt)
USE LPT1: $nprt /persistent
CASE NOT INSTR($nprt,'\\') ;LOCAL PRINTER DEFAULT, SO WE WANT TO REMOVE NETWORK MAPPING
USE LPT1: /delete /persistent
ENDSELECT
function LocalAdmin()
$LocalAdmin=ingroup('@wksta\'+sidtoname('S-1-5-32-544'))-1+@inwin
endfunction
|
|
Top
|
|
|
|
#43338 - 2003-07-25 06:19 PM
Re: Help with printer script - revised
|
rbardo
Fresh Scripter
Registered: 2003-07-24
Posts: 47
Loc: USA
|
You guys are the best!!!
Thanks a lot, I appreciate it. It helps so much! Now I have learned so much as well...
Sorry for not following initial procedure for submittal. Im new and it will be correct next time.
Thanks again.
Rob
_________________________
Ekadanta Mahakaya Surya koti samaprabha
Nirbighnam kurume deva sarbakaryeshu sarbada
|
Top
|
|
|
|
#43339 - 2003-07-25 07:37 PM
Re: Help with printer script - revised
|
rbardo
Fresh Scripter
Registered: 2003-07-24
Posts: 47
Loc: USA
|
Hey NTDOC,
Im gonna peruse through here and look for some registry hack code help, but per your question in the code you assisted me with... Here is what the reg keys do..
code:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer] "NoDriveTypeAutoRun"=dword:00000095 "NoDrives"=dword:0000001f
and code:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders] "AppData"="C:\\Documents and Settings\\adam\\Application Data" "Cookies"="C:\\Documents and Settings\\adam\\Cookies" "Desktop"="C:\\Documents and Settings\\adam\\Desktop" "Favorites"="C:\\Documents and Settings\\adam\\Favorites" "NetHood"="C:\\Documents and Settings\\adam\\NetHood" "Personal"="z:\\" "My Pictures"="z:\\My Pictures" "PrintHood"="C:\\Documents and Settings\\adam\\PrintHood" "Recent"="C:\\Documents and Settings\\adam\\Recent" "SendTo"="C:\\Documents and Settings\\adam\\SendTo" "Start Menu"="C:\\Documents and Settings\\adam\\Start Menu" "Templates"="C:\\Documents and Settings\\adam\\Templates" "Programs"="C:\\Documents and Settings\\adam\\Start Menu\\Programs" "Startup"="C:\\Documents and Settings\\adam\\Start Menu\\Programs\\Startup" "Local Settings"="C:\\Documents and Settings\\adam\\Local Settings" "Local AppData"="C:\\Documents and Settings\\adam\\Local Settings\\Application Data" "Cache"="C:\\Documents and Settings\\adam\\Local Settings\\Temporary Internet Files" "History"="C:\\Documents and Settings\\adam\\Local Settings\\History" "Fonts"="C:\\WINNT\\Fonts" "Administrative Tools"=""
and code:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Outlook\Security] "Level"=dword:00000003 "UseCRLChasing"=dword:00000001 "Level1Remove"="txt;gif;html;htm"
whats my best bet for kix scripts to do natively as you stated...?
_________________________
Ekadanta Mahakaya Surya koti samaprabha
Nirbighnam kurume deva sarbakaryeshu sarbada
|
Top
|
|
|
|
#43343 - 2003-07-25 10:13 PM
Re: Help with printer script - revised
|
rbardo
Fresh Scripter
Registered: 2003-07-24
Posts: 47
Loc: USA
|
THis makes the users "my documents" folder default to the mapped "home" Z: drive on the server where we want to centralize all user saved files.. (not on the local hard drive)
--Z: is mapped through domain manager settings.
_________________________
Ekadanta Mahakaya Surya koti samaprabha
Nirbighnam kurume deva sarbakaryeshu sarbada
|
Top
|
|
|
|
#43345 - 2003-07-25 11:23 PM
Re: Help with printer script - revised
|
rbardo
Fresh Scripter
Registered: 2003-07-24
Posts: 47
Loc: USA
|
Ok, thanks for the fyi sealeopard. I will look into that further.
Could you all please help me with my current script? Please look where I put a message in for help area.
code:
;=============================================================================================== ;**** Created with KiXscripts Editor | http://KiXscripts.com **** ;**** Last Modified on 7/25/2003 at 2:17:56 PM by rbardo **** ;===============================================================================================
If @INWIN=1 ; Excludes all Windows 9x systems If LocalAdmin ; Only runs if the user has Local workstation admin rights ; Most installers and uninstallers will not run if the user ; does not have Admin rights $CheckWS=ReadValue('HKLM\Software\MyCompany\WS', 'RANUNINSTALLER') If $CheckWS <> 1 If Exist('%ProgramFiles%\OfficeView Pro\uninstWS.exe') Shell '%COMSPEC% /C %ProgramFiles%\OfficeView Pro\uninstWS.exe /S' $MarkWS=WriteValue('HKLM\Software\MyCompany\WS', 'RANUNINSTALLER', '1', 'REG_SZ') ; Mark the registry so that this program does not run every time the user logs in EndIf EndIf ; I assume you are running this PC Asset Navigator program ; http://www.a-navigator.com/an/index.html Use W: /DELETE /PERSISTENT Use W: '\\holdem\asset_db$' Shell '%COMSPEC% /C W:\ina32.exe' Use W: /DELETE /PERSISTENT EndIf EndIf
; I need help from here ; I am trying to get the sid to use in the next function ; I am not sure how to pass the information gathered here to the next function ;ie: the users name
Break on $SID = GetSID("WinNT://ff/lligetfa,USER") ? $SID
Get $_ Exit 1 ; ;Source Function GetSID($adspath) Dim $rev,$sidobj,$sid,$sac,$x $GetSID=0
$sidobj=CreateObject("adssid") $sidobj.setas(5,$adspath) $sid=$sidobj.getas(1)
If NOT $sid $sidobj=0 Return EndIf
$Rev=Val(SubStr($sid,1,2))
; Extract the SubAuthority Count (SAC) from the SID (range of 1 - 8, hence no hex conversion necessary) $SAC=Val(SubStr($sid,3,2)) $IdentAuth=Val("&"+SubStr($sid,5,12)) $GetSID="S-"+$Rev+"-"+$IdentAuth
; Convert SID little-endian, just re-reverse the bytes and convert to decimal... ; Recurse as per SAC For $X=1 to $SAC $GetSID=$GetSID+"-"+Val("&"+SubStr($sid,8*$X+15,2)+SubStr($sid,8*$X+13,2)+SubStr($sid,8*$X+11,2)+SubStr($sid,8*$X+9,2)) Next
$sidobj=0
EndFunction
Function updateregistry($HKEY_CURRENT_USER, $Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders, $Personal=z:\\) Dim $currentregvalue, $currentregtype, $rc $updateregistry=0 If $regtype='' $regtype='REG_SZ' EndIf $currentregtype=ReadType($regsubkey,$regentry) $currentregvalue=ReadValue($regsubkey, $regentry) If $currentregvalue<>$regvalue OR $currentregtype<>$regtype $rc=WriteValue($regsubkey,$regentry,$regvalue,$regtype) If @ERROR Exit @ERROR EndIf $updateregistry=1 EndIf Exit @ERRORendfunction Function updateregistry($HKEY_CURRENT_USER, $Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders, $My Pictures=z:\\My Pictures) Dim $currentregvalue, $currentregtype, $rc $updateregistry=0 If $regtype='' $regtype='REG_SZ' EndIf $currentregtype=ReadType($regsubkey,$regentry) $currentregvalue=ReadValue($regsubkey, $regentry) If $currentregvalue<>$regvalue OR $currentregtype<>$regtype $rc=WriteValue($regsubkey,$regentry,$regvalue,$regtype) If @ERROR Exit @ERROR EndIf $updateregistry=1 EndIf Exit @ERRORendfunction ; to here... ; I know the code is there twice but i dont know how to nest and i needed to change two values as you can see ; The rest of the script will run for all systems including Windows 9x
Use J: /DELETE /PERSISTENT Use J: '\\terminal\slip_stream' $MyDox = '%COMSPEC% /C REGEDIT /S j:\registry\mydox.reg >nul 2>nul' ;$HideC = '%COMSPEC% /C REGEDIT /S j:\registry\hide_c.reg >nul 2>nul' $Outlook = '%COMSPEC% /C REGEDIT /S j:\registry\outlook.reg >nul 2>nul' ; Not sure what this does, but KiX can do all the registry edits natively Use J: /DELETE /PERSISTENT
Use g: '\\ntbaksrv\common' Use i: '\\ntbaksrv\prod' Use k: '\\ntbaksrv\service' Use m: '\\ntserver\sdpcmrpw' Use o: '\\royal\mis' Use y: '\\terminal\share_point'
; use Z: /home ; Don't use this. Map it via the User Manager or AD tools ; Windows 9x Can Not map the Z: drive as the redirector uses this ; drive during the logon process
;printers.kix: ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Dim $priReg, $x, $i, $rc, $ps $loc='HKEY_CURRENT_USER\Network\LPT1' $reg='HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion' $dev=$reg+'\Devices' $nprt=Split(ReadValue($reg+'\Windows','Device'),',')[0] $sysdrv=SubStr('%WINDIR%',1,2)
If Exist('H:') $ps='H:\Scripts_DO_NOT_DELETE' Else $ps=$sysdrv+'\Scripts' EndIf If 0=Exist($ps) MD $ps EndIf $ps=$ps+'\Printsetup.ini'
$i=0 Do If '\\'=Left($x,2) $priReg=$priReg+$x EndIf $x=EnumValue($dev,$i) $i=$i+1 Until @error
If Len($priReg) $rc=WriteProfileString($ps,'Printers','','') $priReg=Split($priReg,'\\') For $i=1 to Ubound($priReg) $rc=WriteProfileString($ps,'Printers',$i,'\\'+$priReg[$i]) Next EndIf
Select Case InStr($nprt,'\\') ;WRITE THE DEFAULT PRINTER TO THE CONFIG $rc=WriteProfileString($ps,'Printers','Default',$nprt) Use LPT1: /delete /persistent Use LPT1: $nprt /persistent Case $nprt='' AND Exist($ps) ;NO DEFAULT PRINTER, LOAD PRINTERS FROM SAVED INFO For Each $key In Split(ReadProfileString($ps,'Printers',''),Chr(10)) $nul=AddPrinterConnection(ReadProfileString($ps,'Printers',$key)) Next $nprt=ReadProfileString($ps,'Printers','Default') $rc=SetDefaultPrinter($nprt) Use LPT1: $nprt /persistent Case NOT InStr($nprt,'\\') ;LOCAL PRINTER DEFAULT, SO WE WANT TO REMOVE NETWORK MAPPING Use LPT1: /delete /persistent EndSelect
Function LocalAdmin() $LocalAdmin=InGroup('@wksta\'+SIDToName('S-1-5-32-544'))-1+@inwin EndFunction
Function IdentifyRemoteUser($strComputer) Break On Dim $strComputer $objWMIService = GetObject("winmgmts:" + "{impersonationLevel=impersonate}!\\" + $strComputer + "\root\cimv2") $colComputer = $objWMIService.ExecQuery ("Select * from Win32_ComputerSystem") For Each $objComputer In $colComputer ? $objComputer.UserName Next EndFunction
Shell '%COMSPEC% /C \\Ntbaksrv\NETLOGON\use.exe'
_________________________
Ekadanta Mahakaya Surya koti samaprabha
Nirbighnam kurume deva sarbakaryeshu sarbada
|
Top
|
|
|
|
#43349 - 2003-07-26 02:32 AM
Re: Help with printer script - revised
|
Sealeopard
KiX Master
Registered: 2001-04-25
Posts: 11164
Loc: Boston, MA, USA
|
It's not toast. However, it does have problems. The best way is to start with a script outline, then add functionality piece-by piece. Get each piece working, then add the next one.
Also, keep clean syntax and structure. Don't mix script code, subroutines, and functions. Functiosn should grouped togeter either at the very top or very bottom of a script. However, the preferred method is to have functions inside a function library, e.g. FUNCTIONS.UDF that gets included into the scirp by placing a CALL FUNCTIONS.UDF at the top of the script.
It's also good to use SETOPTION('Explicit','on') as this will catch syntax errors in variables and ensures correct scoping of variables.
It takes more time to debug sloppy code than coding in a clean and concise way fromt he very beginning.
Finally, if you copy functions from the UDF Forum, please keep the UDF Header intact. [ 26. July 2003, 02:48: Message edited by: sealeopard ]
_________________________
There are two types of vessels, submarines and targets.
|
Top
|
|
|
|
#43350 - 2003-07-26 02:37 AM
Re: Help with printer script - revised
|
NTDOC
Administrator
Registered: 2000-07-28
Posts: 11623
Loc: CA
|
Does that mean I have to go back and put my UDF headers back in?
|
Top
|
|
|
|
#43353 - 2003-07-26 06:03 PM
Re: Help with printer script - revised
|
Kdyer
KiX Supporter
Registered: 2001-01-03
Posts: 6241
Loc: Tigard, OR
|
adam (hope that is your name ),
One thing I noticed immediately when I saw your REG extracts is the word adam. Any registry merges/changes should not be that specific. You will probably want to have a look at the following: Copy a shortcut to the Desktop, Start Menu, etc.
We have pretty fine list of FAQ too at: KiXtart FAQ & How to's
Also, with your changes to - (1) "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
Looks just like a policy.
(2) "HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Outlook\Security" Is OL 2002 or XP all you have in the work place? Did you get a chance to look at - Outlook/Exchange Configuration
This has great deal of research put into configuring and setting up Outlook.
HTH,
Kent
|
Top
|
|
|
|
#43354 - 2003-07-27 03:07 AM
Re: Help with printer script - revised
|
rbardo
Fresh Scripter
Registered: 2003-07-24
Posts: 47
Loc: USA
|
Thanks guys..
Here is the latest that for the most part works except I cant find that .ini file for the printers anywhere.. Yes it does create the folder..
code:
;=============================================================================================== ;**** Created with KiXscripts Editor | http://KiXscripts.com **** ;**** Last Modified on 7/26/2003 at 5:00:40 PM by rbardo **** ;===============================================================================================
;If @INWIN=1 ; Excludes all Windows 9x systems ;If LocalAdmin ; Only runs if the user has Local workstation admin rights ; Most installers and uninstallers will not run if the user ; does not have Admin rights $CheckWS=ReadValue('HKLM\Software\VendingData Corporation\WS', 'RANUNINSTALLER') If $CheckWS <> 1 If Exist('%ProgramFiles%\OfficeView Pro\uninstWS.exe') Shell '%COMSPEC% /C %ProgramFiles%\OfficeView Pro\uninstWS.exe /S /y' $MarkWS=WriteValue('HKLM\Software\VendingData Corporation\WS', 'RANUNINSTALLER', '1', 'REG_SZ') ; Mark the registry so that this program does not run every time the user logs in EndIf EndIf ;EndIf ;EndIf ; http://www.a-navigator.com/an/index.html Use W: /DELETE /PERSISTENT Use W: '\\holdem\asset_db$' Shell '%COMSPEC% /C W:\ina32.exe' Use W: /DELETE /PERSISTENT
; The rest of the script will run for all systems including Windows 9x
Use g: '\\ntbaksrv\common' Use i: '\\ntbaksrv\prod' Use k: '\\ntbaksrv\service' Use m: '\\ntserver\sdpcmrpw' Use o: '\\royal\mis' Use y: '\\terminal\share_point'
Copy '\\terminal\desktop\*.*' 'c:\documents and settings\' + @USERID + '\desktop' /s
; use Z: /home ; Don't use this. Map it via the User Manager or AD tools ; Windows 9x Can Not map the Z: drive as the redirector uses this ; drive during the logon process ;*********************************************************************** ;** ;** InstallRegFiles($Regfiles) ;** Function InstallRegFiles($Regdir) $RegFiles=$RegDir + "\*.reg" If Exist($Regdir) $RegFile=Dir($Regfiles) While $RegFile<>"" AND @Error=0 ;Install RegFile If $NT_mode="yes" ; If this is NT than don't install regfiles that start with "w9_" If Left($RegFile,3) <> "w9_" stpDbgMessage("Info"," - Installing : " + $Regdir + "\" + $RegFile) If RunShell($windir + "/regedit /s " + $Regdir + "\" + $RegFile)<>0 stpDbgMessage("Error","@ERROR - Regedit : " + $Regdir + "\" + $RegFile,@SERROR) EndIf EndIf Else ; If this is W9x than don't install regfiles that start with "nt_" If Left($RegFile,3) <> "nt_" stpDbgMessage("Info"," - Installing : " + $Regdir + "\" + $RegFile) If RunShell($windir + "/regedit /s " + $Regdir + "\" + $RegFile)<>0 stpDbgMessage("Error","@ERROR - Regedit : " + $Regdir + "\" + $RegFile,@SERROR) EndIf EndIf EndIf $RegFile=Dir() If @Error<>0 AND @Error<>18 stpDbgMessage("Error","@ERROR - Retrieving Files for Dir : " +$Regdir ,@SERROR) EndIf Loop EndIf EndFunction
; Default My Documents to Z: drive ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WriteValue('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', 'Personal', 'Z:\\', 'Reg_SZ') WriteValue('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', 'My Pictures', 'Z:\\My Pictures', 'Reg_SZ')
;printers.kix ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $loc='HKEY_CURRENT_USER\Network\LPT1' $reg='HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion' $dev=$reg+'\Devices' $nprt=Split(ReadValue($reg+'\Windows','Device'),',')[0] $sysdrv=SubStr('%WINDIR%',1,2) Dim $priReg, $x, $i, $rc, $ps If Exist('Z:') $ps='Z:\Scripts_DO_NOT_DELETE' Else $ps=$sysdrv+'\Scripts' EndIf If 0=Exist($ps) MD $ps EndIf $ps=$ps+'\Printsetup.ini' $i=0 Do If '\\'=Left($x,2) $priReg=$priReg+$x EndIf $x=EnumValue($dev,$i) $i=$i+1 Until @error If Len($priReg) $rc=WriteProfileString($ps,'Printers','','') $priReg=Split($priReg,'\\') For $i=1 to Ubound($priReg) $rc=WriteProfileString($ps,'Printers',$i,'\\'+$priReg[$i]) Next EndIf Select Case InStr($nprt,'\\') ;WRITE THE DEFAULT PRINTER TO THE CONFIG $rc=WriteProfileString($ps,'Printers','Default',$nprt) Use LPT1: /delete /persistent Use LPT1: $nprt /persistent Case $nprt='' AND Exist($ps) ;NO DEFAULT PRINTER, LOAD PRINTERS FROM SAVED INFO For Each $key In Split(ReadProfileString($ps,'Printers',''),Chr(10)) $nul=AddPrinterConnection(ReadProfileString($ps,'Printers',$key)) Next $nprt=ReadProfileString($ps,'Printers','Default') $rc=SetDefaultPrinter($nprt) Use LPT1: $nprt /persistent Case NOT InStr($nprt,'\\') ;LOCAL PRINTER DEFAULT, SO WE WANT TO REMOVE NETWORK MAPPING Use LPT1: /delete /persistent EndSelect
Shell '%COMSPEC% /C \\Ntbaksrv\NETLOGON\use.exe'
PLease let me know what you guys think.. Thanks. [ 27. July 2003, 09:18: Message edited by: rbardo ]
_________________________
Ekadanta Mahakaya Surya koti samaprabha
Nirbighnam kurume deva sarbakaryeshu sarbada
|
Top
|
|
|
|
#43355 - 2003-07-27 09:58 AM
Re: Help with printer script - revised
|
Kdyer
KiX Supporter
Registered: 2001-01-03
Posts: 6241
Loc: Tigard, OR
|
Robert,
Two comments:
(1) What are you merging with regedit /s ? You can do these changes all with KiXtart. (2) The use of Z: Drive will give you trouble with Windows 9x clients as they tend to use that drive for logging in.
If you are merging this.. It is setup based on profile anyway and it should not matter..
"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
However, you can use the Shell Folders for your script..
For this, you should be able to change to KiXtart -
$reg='HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer' IF READVALUE($REG,'NoDriveTypeAutoRun')<>'00000095' $RC=WRITEVALUE($REG,'NoDriveTypeAutoRun','00000095','REG_BINARY') ENDIF IF READVALUE($REG,'NoDrives')<>'0000001f' $RC=WRITEVALUE($REG,'NoDrives','0000001f','REG_BINARY') ENDIF
And also with -
$REG='HKCU\Software\Microsoft\Office\10.0\Outlook\Security' IF READVALUE($REG,'Level')<>'3' $RC=WRITEVALUE($REG,'Level','','REG_DWORD') ENDIF IF READVALUE($REG,'UseCRLChasing')<>'1' $RC=WRITEVALUE($REG,'UseCRLChasing','1','REG_DWORD') ENDIF IF READVALUE($REG,'Level1Remove')<>'txt;gif;html;htm' $RC=WRITEVALUE($REG,'Level1Remove','txt;gif;html;htm','REG_SZ') ENDIF
I am still wrestling around with the "adam" thing. You should just simply use the folders that are generated with the user's profile. 'Nuff said.
I took your code and made some simple modifications to it. I also added comments for you to look at as well.
;=============================================================================================== ;**** Created with KiXscripts Editor | http://KiXscripts.com **** ;**** Last Modified on 7/26/2003 at 5:00:40 PM by rbardo **** ;=============================================================================================== $usershel='HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders'
;If @INWIN=1 ; Excludes all Windows 9x systems ;If LocalAdmin ; Only runs if the user has Local workstation admin rights ; Most installers and uninstallers will not run if the user ; does not have Admin rights IF ReadValue('HKLM\Software\VendingData Corporation\WS','RANUNINSTALLER')<>1 ;%ProgramFiles% may not exist under 9x IF Exist('%ProgramFiles%\OfficeView Pro\uninstWS.exe') ;IF You need a specific version, use GETFILEVERSION SHELL '%COMSPEC% /C %ProgramFiles%\OfficeView Pro\uninstWS.exe /S /y' $markws=WriteValue('HKLM\Software\VendingData Corporation\WS','RANUNINSTALLER','1','REG_SZ') ; Mark the registry so that this program does not run every time the user logs in ENDIF ENDIF ;EndIf ;EndIf ; http://www.a-navigator.com/an/index.html USE W: /delete /persistent USE W: '\\holdem\asset_db'+'$$' ;Can't the next line be done with a RUN instead of a shell? SHELL '%COMSPEC% /C W:\ina32.exe' USE W: /delete /persistent
; The rest of the script will run for all systems including Windows 9x USE g: '\\ntbaksrv\common' USE i: '\\ntbaksrv\prod' USE k: '\\ntbaksrv\service' USE m: '\\ntserver\sdpcmrpw' USE o: '\\royal\mis' USE y: '\\terminal\share_point'
IF @INWIN=1 $desktop=readvalue($usershel,'desktop') ELSE $desktop='%WINDIR%\DESKTOP' ENDIF COPY '\\terminal\desktop\*.*' $desktop /s
; use Z: /home ; Don't use this. Map it via the User Manager or AD tools ; Windows 9x Can Not map the Z: drive as the redirector uses this ; drive during the logon process ;*********************************************************************** ;** ;** InstallRegFiles($Regfiles) ;** FUNCTION InstallRegFiles($regdir) $regfiles=$regdir + "\*.reg" IF Exist($regdir) $regfile=Dir($regfiles) WHILE $regfile<>"" AND @error=0 ;Install RegFile IF $nt_mode="yes" ; If this is NT than don't install regfiles that start with "w9_" IF Left($regfile,3) <> "w9_" stpDbgMessage("Info"," - Installing : " + $regdir + "\" + $regfile) IF RunShell($windir + "/regedit /s " + $regdir + "\" + $regfile)<>0 stpDbgMessage("Error","@ERROR - Regedit : " + $regdir + "\" + $regfile,@serror) ENDIF ENDIF ELSE ; If this is W9x than don't install regfiles that start with "nt_" IF Left($regfile,3) <> "nt_" stpDbgMessage("Info"," - Installing : " + $regdir + "\" + $regfile) IF RunShell($windir + "/regedit /s " + $regdir + "\" + $regfile)<>0 stpDbgMessage("Error","@ERROR - Regedit : " + $regdir + "\" + $regfile,@serror) ENDIF ENDIF ENDIF $regfile=Dir() IF @error<>0 AND @error<>18 stpDbgMessage("Error","@ERROR - Retrieving Files for Dir : " +$regdir ,@serror) ENDIF LOOP ENDIF ENDFUNCTION
IF @inwin=1 ;EXCLUE 9X machines from this ;Windows 9x machines may also have trouble with the Z: drive as it is used for logins< /font> ;Windows 9x cannot use ADDPRINTERCONNECTION,SETDEFAULTPRINTER,etc. ; Default My Documents to Z: drive ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Two comments here - ;(1) doubling the \\ will double the write back to the registry ;(2) if you want to quiet the write, assign a dummy var to it IF READVALUE($usershel,'Personal')<>'Z:\' $rc=WriteValue($usershel,'Personal','Z:\','Reg_SZ') ENDIF IF READVALUD($usershel,'My Pictures')<>'Z:\My Pictures' $rc=WriteValue($usershel,'My Pictures','Z:\My Pictures','Reg_SZ') ENDIF
;printers.kix ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DIM $prireg, $x, $i, $rc, $ps $loc='HKEY_CURRENT_USER\Network\LPT1' $reg='HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion' $dev=$reg+'\Devices' $nprt=Split(ReadValue($reg+'\Windows','Device'),',')[0] $sysdrv=SubStr('%WINDIR%',1,2)
IF Exist('Z:') $ps='Z:\Scripts_DO_NOT_DELETE' ELSE $ps=$sysdrv+'\Scripts' ENDIF IF 0=Exist($ps) MD $ps ENDIF $ps=$ps+'\Printsetup.ini'
$i=0 DO IF '\\'=Left($x,2) $prireg=$prireg+$x ENDIF $x=EnumValue($dev,$i) $i=$i+1 UNTIL @error
IF Len($prireg) $rc=WriteProfileString($ps,'Printers','','') $prireg=Split($prireg,'\\') FOR $i=1 TO Ubound($prireg) $rc=WriteProfileString($ps,'Printers',$i,'\\'+$prireg[$i]) NEXT ENDIF
SELECT CASE InStr($nprt,'\\') ;WRITE THE DEFAULT PRINTER TO THE CONFIG $rc=WriteProfileString($ps,'Printers','Default',$nprt) USE LPT1: /delete /persistent USE LPT1: $nprt /persistent CASE $nprt='' AND Exist($ps) ;NO DEFAULT PRINTER, LOAD PRINTERS FROM SAVED INFO FOR EACH $key IN Split(ReadProfileString($ps,'Printers',''),Chr(10)) $nul=AddPrinterConnection(ReadProfileString($ps,'Printers',$key)) NEXT $nprt=ReadProfileString($ps,'Printers','Default') $rc=SetDefaultPrinter($nprt) USE LPT1: $nprt /persistent CASE NOT InStr($nprt,'\\') ;LOCAL PRINTER DEFAULT, SO WE WANT TO REMOVE NETWORK MAPPING USE LPT1: /delete /persistent ENDSELECT ENDIF
FUNCTION LocalAdmin() $localadmin=InGroup('@wksta\'+SIDToName('S-1-5-32-544'))-1+@inwin ENDFUNCTION
FUNCTION IdentifyRemoteUser($strcomputer) BREAK ON DIM $strcomputer $objwmiservice = GetObject("winmgmts:" + "{impersonationLevel=impersonate}!\\" + $strcomputer + "\root\cimv2") $colcomputer = $objwmiservice.execquery ("Select * from Win32_ComputerSystem") FOR EACH $objcomputer IN $colcomputer ? $objcomputer.username NEXT ENDFUNCTION
;WHAT IS THIS NEXT LINE USED FOR? SHELL '%COMSPEC% /C \\Ntbaksrv\NETLOGON\use.exe'
HTH,
Kent
|
Top
|
|
|
|
Moderator: Jochen, Allen, Radimus, Glenn Barnas, ShaneEP, Ruud van Velsen, Arend_, Mart
|
0 registered
and 507 anonymous users online.
|
|
|