Windows XP Favorites Folder Redirection via GPOs

Per [MS-GPFR] – In Windows 2000 Server, Windows XP, and Windows Server 2003, a constant list of exactly five user profile folders can be redirected, including My Documents, My Pictures, Desktop, Start Menu, and Application Data.

[MS-GPFR]: Group Policy: Folder Redirection Protocol Extension documentation can be downloaded here.

So in other words folder redirection for Favorites and others file folders in not supported until Vista or later.

So using Folder Redirection for My Documents only I created two Group Policy objects. One GPO being the standard Folder Redirection Policy pointing serveral groups to various MyDocuments stores. With a second Group Policy object I added the following script to the logon process. The script sleeps for 30 seconds allowing time for other group policy objects to complete processing and then using special folders the script gets the MyDocuments location and appends \Favorites to the end and then populates the appropriate registry value to redirect Favorites. I additionally added a three minute timeout to the script incase the scripts hangs, not that it would, but you wouldn’t want it to hang indefinitely.

Simple Favorites Folder Redirection using Special Folders for MyDocuments

On Error Resume Next
Const HKEY_CURRENT_USER = &H80000001
strComputer = "."

WScript.Timeout 180
WScript.Sleep 30000
Set WshShell = WScript.CreateObject("WScript.Shell")
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
strValueName = "Favorites"
strValue = WshShell.SpecialFolders("MyDocuments") & "\Favorites"
oReg.SetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,strValue

Re-Usable VBScript Functions – Part I

In this Multi-Part Series I will post lists on VBScript Functions and Subs that I have either found or written. I am a big fan of turning any useful code into a functions and adding it to my default VBScript Template, it saves a ton of time on the next scripting task. By no means am I claiming I wrote all of  these, most were just re-purposed into reusable functions. I hope you find these useful. In the later part of the series I will include my template I use to begin all my scripts.

Determine if the computer is a laptop:

?View Code VBSCRIPT
Function IsLaptop(strComputer)
    On Error Resume Next
    Set objWMIService = GetObject( "winmgmts://" & strComputer & "/root/cimv2" )
    Set colItems = objWMIService.ExecQuery( "Select * from Win32_Battery", , 48 )
    IsLaptop = False
    For Each objItem in colItems
        IsLaptop = True
    Next
    If Err Then Err.Clear
    On Error GoTo 0
End Function

Example of use

?View Code VBSCRIPT
If IsLaptop( "." ) Then
    WScript.Echo "Laptop
Else
    WScript.Echo "Desktop or server
End If


Shell out a command line with switches:

?View Code VBSCRIPT
Sub RunSwch(ByVal strRunCmd, strRunSwitch)
Dim objWshShell
    Set objWshShell = CreateObject("WScript.Shell")
    objWshShell.Run Chr(34) & strRunCmd & Chr(34)& " " & strRunSwitch, 1, True
    Set objWshShell = Nothing
End Sub

Example of use

?View Code VBSCRIPT
RunSwch "C:\Program Files\ApplicationX\Start.exe","/S /X /Log C:\log.log"


Shell out a command line without switches:

?View Code VBSCRIPT
Sub Run(ByVal strRunCmd)
Dim objWshShell
    Set objWshShell = CreateObject("WScript.Shell")
    objWshShell.Run Chr(34) & strRunCmd & Chr(34), 1, True
    Set objWshShell = Nothing
End Sub

Example of use

?View Code VBSCRIPT
Run "C:\Program Files\ApplicationX\Start.exe"

Windows 7 Ultimate Signature Edition

I received my copy of Windows 7 Ultimate Signature Edition today in the mail. I thouhgt I would share an image of it. The DVD itself is just a promotional disc with the Product Key inside the case. The only thing special is the outside of the case itself. Well here it is  (It was impossible with my photography skills to get rid of the glare)

Windows 7 Ultimate Signature Edition

Windows 7 Ultimate Signature Edition

Host a Windows 7 House Party!

What a cool idea, host a Windows 7 House Party and get free stuff! Apply online to host a Launch Party. Choose a day from October 22-29 and if you’re selected, you’ll not only receive a special Signature Edition of Windows® 7 Ultimate but your very own Windows® 7 Party Pack.

All Hosts will receive:

  • One limited Signature Edition Windows 7® Ultimate
  • One Deck of Playing Cards with Windows 7® Desktop Design
  • One Puzzle with Windows 7® Desktop Design
  • One Poster with Windows 7® Desktop Design
  • Ten Tote Bags with Windows 7® Desktop Design for hosts and guests

Also included in USA party packs:

  • One package of streamers for decoration
  • One package of balloons for decoration
  • One table top centerpiece for decoration
  • One package of Windows 7® napkins

Also a drawing of 64 eligible entrants who are hosts of a Windows® 7 Launch Party will win a mini-notebook laptop personal computer.

To Apply and find more details from the source: http://www.houseparty.com/splash/windows7usa

See above website for exact details, blog post is for informational purposes only, so be sure to read the rules and details from the source. We will not be responsible for any inaccuracies found on ITNotes.net.

Simple Script to find MSI errors

Here’s a simple PowerScript to pull out MSI errors out of the EventViewer and the MSI logs.

Baiscally the script first clears the log file then clears everything out of the Temp directory. Next the script prompts for the admin to start the installation, once you are done installing the program click ok to continue. The script will then collect the error messages from the MSI logs and the last three windows installer entries from the EventViewer. If there are no errors then it will return sucessful installs entries from the Event Viewer and nothing from the logs. In short this script is just a time saver from having to dig though the event logs and the temp directory for the msi logs and then having to go through those long MSI logs. Troubleshooting the error codes will still need to happen outside of the script.

Be sure to enable Windows Installer logging before beginning. This can be set with the following PowerShell command line.

Set-ItemProperty -path “HKLM:\SOFTWARE\Policies\Microsoft\Windows\Installer” -name “Logging” -value voicewarmup

Here’s the final code:

MSIErrorExtractor.ps1

?View Code POWERSHELL
 
Clear-Content errors.txt
 
get-Childitem $env:Temp | remove-Item -force
 
$a = new-object -comobject wscript.shell
$b = $a.popup("Please run installation and click ok once installation is complete",0,"Waiting for MSI Installation and User Input",1)
 
Get-EventLog Application | ? {$_.Source -eq "MSIInstaller" } |  Select-Object TimeGenerated,Source, EntryType, Message -First 3| Format-List | out-file errors.txt
#-and $_.EntryType -eq "Error"
 
filter finderrors { if ($_.contains("Error")) {$_}}
Get-Content $env:temp\MSI*.log | finderrors | Out-File -Append errors.txt | notepad errors.txt

PowerShell 2.0 Release Candidate for Windows Vista and Server 2008

Still waiting for PowerShell 2.0 for Windows XP and Server 2003, but this is a good start.

Read more from the source: http://blogs.msdn.com/powershell/archive/2009/08/14/powershell-2-0-for-windows-vista-and-windows-server-2008-release-candidate.aspx

Download here: https://connect.microsoft.com/windowsmanagement/Downloads