Jump to content

Shamwari

Member
  • Posts

    47
  • Joined

  • Last visited

  • Donations

    0.00 USD 
  • Country

    United Kingdom

Posts posted by Shamwari

  1. Under profile you can specify a home directory with a drive letter mapping, and you can specify a path when setting up the user: \\server_name\%username%

    With regards My Documents being in that directory, you need to have a look at redirected folders using a group policy.

    Hope that this helps.

  2. Bâshrat the Sneaky

    Could I just clarify your recommendation on which to integrate into a clean source first. I have posted this topic after searching the forum, and wonder if others need this info. I was patching my source up to date with the latest hotfixes, and then integrating my drivers. When you do it this way round, however, your svcpack.inf gets blatted.

    Thanks for all the great work and support on your DriverPacks.

    Shamwari

  3. Are you trying to automate the patching of your XP source with the latest hofixes? If you are, you could use the following cmd found at Gadgets and Tech news:

    @Echo off
    rem ////////////////////////////////////////////////////////////////////////////
    rem // IntegrateAll.bat
    rem // This Batch file integrates the hotfixes for Windows XP SP2
    rem // Syntax:
    rem // Integrateall <DistributionFolder>
    rem ////////////////////////////////////////////////////////////////////////////

    if "%~1" == "-p" goto Process

    rem ////////////////////////////////////////////////////////////////////////////
    rem // Main routine
    rem // %1 contains Options
    rem //

    rem //
    rem // Verify that we are pointing to a distribution folder base
    rem //
    if exist "%~1\I386" goto FolderExists

    echo -- "%~1" is not a distribution folder.
    echo Syntax:
    echo IntegrateAll ^<DistributionFolder^>
    goto END

    :FolderExists

    echo ::: Integrating Updates :::

    set DISTDIR="%~1"
    set HFINT="%~1\i386\svcpack\HFINT.DAT"
    set HFINTTEMP="%~1\i386\svcpack\HFINT.TMP"

    rem //
    rem // Do 885835 and then 885250 to start with. There is a conflict here. So
    rem // we need to do some special processing. Note: 885835 is superceeded by
    rem // 885250 but we want an entry so that the hotfix show as installed
    rem //
    call %0 -p KB885835 "KB885835.exe"

    rem // Modify the line mrxsmb.sys (change it to mrxsmb.sys.tmp)
    for /f "usebackq" %%L in (%HFINT%) DO (
    if %%L==mrxsmb.sys (
    echo %%L.tmp>>%HFINTTEMP%
    ) else (
    echo %%L>>%HFINTTEMP% )
    )
    move /y %HFINTTEMP% %HFINT% > NUL

    rem // Integrate 85250
    call %0 -p KB885250 "KB885250.exe"

    rem // Modify the line back (change the mrxsmb.sys.tmp back to mrxsmb.sys)
    for /f "usebackq" %%L in (%HFINT%) DO (
    if %%L==mrxsmb.sys.tmp (
    echo mrxsmb.sys>>%HFINTTEMP%
    ) else (
    echo %%L>>%HFINTTEMP%
    )
    )
    move /y %HFINTTEMP% %HFINT% > NUL

    rem //
    rem // Now integrate all the rest of the hotfixes.

    call %0 -p KB873339 "KB873339.exe"
    call %0 -p KB885626 "KB885626.exe"
    call %0 -p KB885836 "KB885836.exe"
    call %0 -p KB886185 "KB886185.exe"
    call %0 -p KB887742 "KB887742.exe"
    call %0 -p KB888113 "KB888113.exe"
    call %0 -p KB888302 "KB888302.exe"
    call %0 -p KB890046 "KB890046.exe"
    call %0 -p KB890859 "KB890859.exe"
    call %0 -p KB891781 "KB891781.exe"
    call %0 -p KB893066 "KB893066.exe"
    call %0 -p KB893756 "KB893756.exe"
    call %0 -p KB893803 "KB893803.exe"
    call %0 -p KB894391 "KB894391.exe"
    call %0 -p KB896358 "KB896358.exe"
    call %0 -p KB896422 "KB896422.exe"
    call %0 -p KB896423 "KB896423.exe"
    call %0 -p KB896424 "KB896424.exe"
    call %0 -p KB896428 "KB896428.exe"
    call %0 -p KB896688 "KB896688.exe"
    call %0 -p KB899587 "KB899587.exe"
    call %0 -p KB899589 "KB899589.exe"
    call %0 -p KB899591 "KB899591.exe"
    call %0 -p KB900725 "KB900725.exe"
    call %0 -p KB901017 "KB901017.exe"
    call %0 -p KB901214 "KB901214.exe"
    call %0 -p KB902400 "KB902400.exe"
    call %0 -p KB904706 "KB904706.exe"
    call %0 -p KB905414 "KB905414.exe"
    call %0 -p KB905749 "KB905749.exe"

    echo.
    echo ::: Done :::
    echo.

    goto END

    rem ////////////////////////////////////////////////////////////////////////////
    rem ////////////////////////////////////////////////////////////////////////////
    :Process
    rem //
    rem // %2 will contain the KB number
    rem // %3 will contain the Exe file name
    rem //

    echo Integrating %2
    "%~3" /integrate:%DISTDIR% /passive

    :EndProcess
    goto END

    rem ////////////////////////////////////////////////////////////////////////////

    :END

  4. dlevens

    Excellent post, I support 10 000 PCs which are rebuilt on a regular basis, and I can confirm that you can use one image for all hardware. We use an unattended install to create the image, and I would just like to add some advice to those trying to achieve this:

    Add the following to your unattend.txt/winnt.sif

    [Unattended]
    ComputerType = "Advanced Configuration and Power Interface (ACPI) PC", Retail

    You will then have an image that when syspreped will work on any acpi compliant PC (we are still supporting PC over 4 years old)

    Any PC that has problems imaging with this image can have the unattended install forced on it, and we know it will be identical to the image.

    If you change software versions regularly, keep the software installs outside the image, i.e. in runonceex first map a drive, and then install add on software over the network.

    The advantage of an image is that it is a 32bit environment, so you can add as many drivers as you wish without hitting the DOS limitations of an unattended network installation.

    The second thing you need to do to deal with different mass storage devices is add the following to your sysprep.inf

    [Sysprep]
    BuildMassStorageSection = Yes

    cableguy_uk:

    Both installs have their uses, but in my opinion, if you can create a "universal image", it beat the unattended install hands down in both speed and robustness. However, to create a good image, in my opinion, you need a good unattended installation to create it. It is alot easier changing things in one place, untill you have an unattended install you are satisfied with. At this point you sysprep the result, create your image, and freeze development on both.

    Kind regards and good luck.

  5. This sounds like a virus to me too. You could try using Stinger to cure if it is a fairly recent virus (Stinger only checks for a subset of viruses). If the virus includes a backdoor trojan, I would seriously consider a rebuild of XP.

    Spyware etc: you can Google SpyBot and AdAware for utilities to check your system.

  6. How about the following batch I found on http://www.nzgadget.com/ article posted Sunday, September 11, 2005:

    "Put the following into a batch file (I called it IntegrateAll.bat). Execute the batch file with the command:

    IntegrateAll C:\XP"

    @Echo off
    rem ////////////////////////////////////////////////////////////////////////////
    rem // IntegrateAll.bat
    rem // This Batch file integrates the hotfixes for Windows XP SP2
    rem // Syntax:
    rem // IntegrateAll <DistributionFolder>
    rem ////////////////////////////////////////////////////////////////////////////

    if "%~1" == "-p" goto Process

    rem ////////////////////////////////////////////////////////////////////////////
    rem // Main routine
    rem // %1 contains Options
    rem //

    rem //
    rem // Verify that we are pointing to a distribution folder base
    rem //
    if exist "%~1\I386" goto FolderExists

    echo -- "%~1" is not a distribution folder.
    echo Syntax:
    echo IntegrateAll ^<DistributionFolder^>
    goto END

    :FolderExists

    echo ::: Integrating Updates :::

    set DISTDIR="%~1"
    set HFINT="%~1\i386\svcpack\HFINT.DAT"
    set HFINTTEMP="%~1\i386\svcpack\HFINT.TMP"

    rem //
    rem // Do 885835 and then 885250 to start with. There is a conflict here. So
    rem // we need to do some special processing. Note: 885835 is superceeded by
    rem // 885250 but we want an entry so that the hotfix show as installed
    rem //
    call %0 -p KB885835 "WindowsXP-KB885835-x86-ENU.exe"

    rem // Modify the line mrxsmb.sys (change it to mrxsmb.sys.tmp)
    for /f "usebackq" %%L in (%HFINT%) DO (
    if %%L==mrxsmb.sys (
    echo %%L.tmp>>%HFINTTEMP%
    ) else (
    echo %%L>>%HFINTTEMP% )
    )
    move /y %HFINTTEMP% %HFINT% > NUL

    rem // Integrate 85250
    call %0 -p KB885250 "WindowsXP-KB885250-x86-ENU.exe"

    rem // Modify the line back (change the mrxsmb.sys.tmp back to mrxsmb.sys)
    for /f "usebackq" %%L in (%HFINT%) DO (
    if %%L==mrxsmb.sys.tmp (
    echo mrxsmb.sys>>%HFINTTEMP%
    ) else (
    echo %%L>>%HFINTTEMP%
    )
    )
    move /y %HFINTTEMP% %HFINT% > NUL

    rem //
    rem // Now integrate all the rest of the hotfixes.

    call %0 -p KB888302 "WindowsXP-KB888302-x86-ENU.exe"
    call %0 -p KB887472 "WindowsXP-KB887472-x86-enu.exe"
    call %0 -p KB891781 "WindowsXP-KB891781-x86-ENU.exe"
    call %0 -p KB888113 "WindowsXP-KB888113-x86-ENU.exe"
    call %0 -p KB867282 "WindowsXP-KB867282-x86-ENU.exe"
    call %0 -p KB873333 "WindowsXP-KB873333-x86-ENU.exe"
    call %0 -p KB890175 "WindowsXP-KB890175-x86-ENU.exe"
    call %0 -p KB886185 "WindowsXP-KB886185-x86-enu.exe"
    call %0 -p KB885836 "WindowsXP-KB885836-x86-ENU.exe"
    call %0 -p KB873339 "WindowsXP-KB873339-x86-ENU.exe"
    call %0 -p KB887742 "WindowsXP-KB887742-x86-ENU.exe"

    call %0 -p KB883939 "WindowsXP-KB883939-x86-ENU.exe"
    call %0 -p KB890046 "WindowsXP-KB890046-x86-ENU.exe"
    call %0 -p KB890859 "WindowsXP-KB890859-x86-ENU.exe"
    call %0 -p KB893066 "WindowsXP-KB893066-v2-x86-ENU.exe"
    call %0 -p KB893086 "WindowsXP-KB893086-x86-ENU.exe"
    call %0 -p KB896358 "WindowsXP-KB896358-x86-ENU.exe"
    call %0 -p KB896422 "WindowsXP-KB896422-x86-ENU.exe"
    call %0 -p KB896428 "WindowsXP-KB896428-x86-ENU.exe"
    call %0 -p KB898461 "WindowsXP-KB898461-x86-ENU.exe"
    call %0 -p KB903235 "WindowsXP-KB903235-x86-ENU.exe"
    call %0 -p KB901214 "WindowsXP-KB901214-x86-ENU.exe"
    call %0 -p KB893803v2 "WindowsInstaller-KB893803-v2-x86.exe"
    call %0 -p KB896727 "WindowsXP-KB896727-x86-ENU.exe"
    call %0 -p KB899587 "WindowsXP-KB899587-x86-ENU.exe"
    call %0 -p KB894391 "WindowsXP-KB894391-x86-ENU.exe"
    call %0 -p KB899588 "WindowsXP-KB899588-x86-ENU.exe"
    call %0 -p KB896423 "WindowsXP-KB896423-x86-ENU.exe"
    call %0 -p KB899591 "WindowsXP-KB899591-x86-ENU.exe"
    call %0 -p KB893756 "WindowsXP-KB893756-x86-ENU.exe"

    echo.
    echo ::: Done :::
    echo.

    goto END

    rem ////////////////////////////////////////////////////////////////////////////
    rem ////////////////////////////////////////////////////////////////////////////
    :Process
    rem //
    rem // %2 will contain the KB number
    rem // %3 will contain the Exe file name
    rem //

    echo Integrating %2
    "%~3" /integrate:%DISTDIR% /passive

    :EndProcess
    goto END

    rem ////////////////////////////////////////////////////////////////////////////

    :END

    Disclaimer: this is not my work, but it works a charm, and make updating a clean XP source a doddle.

    Regards

  7. Try a regtweak, we used to use the following before migrating to Local Group Policies. We apply retweaks using RunOnceEx:

    [code][HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\sr]
    "Start"=dword:00000004
    "ImagePath"=hex(2):5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
    74,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,52,\
    00,49,00,56,00,45,00,52,00,53,00,5c,00,73,00,72,00,2e,00,73,00,79,00,73,00,\
    00,00

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\sr\Parameters]
    "FirstRun"=dword:00000001[/code]

    Regards
  8. Does this happen all the time, or just when you first boot up into Windows? I know that, although necessary, anti virus programs (of which Symantec is one of the worst offenders) eat a lot of resource, especially if they are trying to check for updates and/or do a system scan on first log on of the day, ie it may have missed a scheduled system scan during the night, so runs it the next time you boot your PC up. I would disconnect from the Internet, uninstall the anti virus program, to see if this is what is causing it.

    On the other hand, if you have an unattended Windows CD/DVD, you can't beat a clean install. In my experience, this is often by far the quickest solution, even though you don't get to the bottom of the root cause of the problem (and the obvious experience you get from going through the pain!!!)

    Regards

  9. Make sure $OEM$ is at the same level as i386 - not inside it. MS documentation is wrong in this account as it tells you to place $OEM$ inside i386. This is incorrect. $OEM$ should be alongside i386.

    For a CD install this is correct, but for a network install the $oem$ dir should be inside the i386 dir. The OemFilesPath statement should point to the root of the i386 dir in your distribution share. Without this statement, the $oem$ dir and all subdirs will be ignored. The driver dir should in fact be in the \$oem$\$1 dir.

    Regards

  10. Don't know if this is any use to anybody, but this is a tool I have used:

    WSName

    Very useful for PC Name = MAC address

    Also same tool can be used on more than just XP.

    He add a VB script for serial numbers:

    ' 
    ' Example VB Script for passing serial number from BIOS to WSName
    '
    ' Edit Const's as required
    '
    ' Note that some BIOS's may be require the serial number to be trimmed to
    ' fit within the allows 15 characters, my Toshiba Tecra 8100 for example
    ' returns : 70013268,PT810A-12C52,PMAT2A12C522/S3A0305D001
    ' The sticker on the back just says : 70013268J, as I can determine the
    ' manufacturer and model I can trim this down easily enough
    '
    ' Some BIOS offer the ability to store asset information, I don't have access
    ' to one of these for testing but I assume the process will be very similar
    '
    ' WMI support was introduced with Windows 2000 (?check this) so you'll need to
    ' use another mechanism to retrieve the serial number on older Windows machines
    '

    Option Explicit

    Const PATH_TO_WSNAME = "C:\WSNAME.EXE"
    Const WSNAME_PARAMETERS = "/REBOOT"

    Dim strSerialNumber, strTEMP, strCommandLine, fso, WshShell

    set fso = CreateObject("Scripting.FileSystemObject")
    set WshShell = WScript.CreateObject("WScript.Shell")

    'Check WSName exists
    if not fso.FileExists(PATH_TO_WSNAME) then
    WScript.Echo "ERROR, Could not find WSNAME in " & fso.GetParentFolderName(PATH_TO_WSNAME)
    WScript.Quit(1)
    end if


    ' --- Get the serial number, abort script on error
    if Not GetWMIStuff("Win32_BIOS","SerialNumber",strSerialNumber) then
    WScript.Echo "ERROR, Could not retrieve serial number"
    WScript.Quit(1)
    end if

    ' --- If we got this far then we have the serial number, if you want to see it
    ' --- uncomment the next line
    'WScript.Echo "The raw serial number is " & strSerialNumber

    ' --- Tidy up the serial number, if required
    strSerialNumber = TidySerialNumber(strSerialNumber)

    ' --- Uncomment the next line if you want to see it the result
    'WScript.Echo "The tidied serial number is " & strSerialNumber

    ' --- Add leading Alpha characters to avoid DNS confusion
    strSerialNumber="WKS-" & strSerialNumber
    'WScript.Echo "The tidied serial number is " & strSerialNumber

    ' --- Build Command Line, to check out the command line uncomment
    strCommandLine = PATH_TO_WSNAME & " /N:" & strSerialNumber & " " & WSNAME_PARAMETERS
    WScript.Echo "About to run the following command:" & vbCRLF & vbCRLF & strCommandLine

    ' --- Now call WSName with the serial number
    Call WshShell.Run(strCommandLine,1,FALSE)

    ' --- Game Over!

    ' ---------------------- Helper Functions ----------------------

    Function GetWMIStuff(strInstance,strProperty,strResult)
    Dim colWMIStuff, objWMI, propWMI
    GetWMIStuff=False
    Set colWMIStuff= GetObject("winmgmts:").InstancesOf(strInstance)
    For Each objWMI In colWMIStuff
    For each propWMI in objWMI.Properties_
    If (Not IsNull(propWMI.Value) AND UCase(propWMI.Name) = UCase(strProperty)) Then
    strResult=propWMI.Value
    GetWMIStuff=True
    Exit Function
    End If
    Next
    Next
    End Function

    ' --------------------------------------------------------------

    Function TidySerialNumber(strSerialNumber)
    Dim strModel
    On Error Resume Next ' Turn off error checking
    TidySerialNumber=strSerialNumber
    Call GetWMIStuff("Win32_BIOS","Description",strModel)
    if Instr(UCase(strModel),"TECRA8100") then ' This will a Tecra8100. I know how to tidy up.
    TidySerialNumber=Left(strSerialNumber,Instr(strSerialNumber,",")-1) ' Trim at the first comma
    end if
    On Error Goto 0 ' Turn error checking back on
    End Function

    Regards

×
×
  • Create New...