Windows Vista Deployment Articles to Read

Note: These links were created with the Copy Text as Link tool for IE.

This live post is a collection of articles related to mass deploying Windows Vista. Please feel free to add your own as we all prepare for this. I’ll add and drop articles from here as they seem to be more or less important.

My current Windows XP deployment technique involves Symantec Ghost, SysPrep, and several custom built applications. We ship multiple computers and the most recent CD boots to a network using DHCP and a dynamicly generated computer name to ensure that a single CD can be used by the shipping and service departments to deliver a consistent image to our clients on new and repaired PCs, regardless of the model. This techniqe also involves creating a factory backup of the image after it is fully configured in the event an install goes bad and must be restarted (hasn’t happend yet) and allows for rolling backups of the operating system partitions and drive mirror.

The goal is to have a similarly efficient deployment process when we deploy Vista based machines on a set date in the near future.
Articles listed here may not be strictly related to Imaging, but may also include details describing running different types of programs under Vista in hopes that any problems can be foreseen:

Deployment
Inside Vista’s new image-based install
The simple life
ImageX and WIM Image Format
Deploying Windows Vista
Windows Vista imaging and deployment
Is the Windows Image (WIM) format used by the Microsoft Systems Management Server (SMS) OS Deployment Feature Pack the final version that Windows Vista will use?
WIM image format From Wikipedia
Customizing Windows Vista Deployments
Hackers get Hacked with new Windows Vista or directly here. – hacking article that discusses sysprep and WIM images.
Plan, Build, and Deploy Guide
A Guide To Pain-Free Desktop Deployment

Networking
Every Vista PC to get a domain name
Could Vista actually slow down networks?

Release/Version Details
Windows Vista Product Overview for IT Professionals
Vista goes gold: the frenzy begins
Work PCs to miss out on key Vista features
Tough new rules on Vista “OEM”
Windows without windows: Microsoft goes command-line with Server Core
Windows Vista RC1: you have the right to do … nothing, actually
Vista’s account protection: one click and it’s gone

Software/hardware issues
Vista scoots to new boot, but it’s still kinda rooted (A discussion of Vista’s handling of the MBR)
HOW TO: Dual-boot XP and Vista
HOW TO: Run Vista on Linux/XP
Vista still lacks full nVIDIA support
Microsoft deliberately blocking disc burning software in Vista, claims Alcohol
HOW TO: Install Nero 7 on Vista
Nero runs under Vista (at last!)
HOW TO: Coax retro DOS games to play on Vista
Need to eavesdrop on a network? Try Microsoft’s new free tool.
Activation
Vista RTM cracked by pirates before release
Microsoft closes piracy loophole: mandatory activation for volume licenced Vista

Virtualization
One for all

Older XP technologies
Let’s build!
Roll with it

A very good walk through of Windows Vista

If you haven’t gotten a chance to play with Windows Vista yet, you might want to take a gander at the LifeHacker article on the subject. It’s picture rich, and a pretty thorough overview of what you’ll be getting.

I just got word yesterday to ramp up for deploying our first Vista based products. It’s coming on like a steam train.

Right now, the way I’m looking at it, I’m not likely to upgrade EVER. Something might change my mind some day… some future game I HAVE to have might require DirectX 10 which, right now, is Vista only. That’s not all that likely. I might get a new machine that has it bundled, I guess. Win XP works well enough for me right now and I am already fighting the activation wizard WAY to often….

In fact, I started my prep work for Vista being the only MS OS sold: I reinstalled Suse Linux on my main machine…

Here’s that article: Q&A with Microsoft about Windows Vista

Click to go to the original site.

How to delete a printer from a command line or from Delphi

The command line for deleting a printer looks like this:

rundll32 printui.dll PrintUIEntry /dn /n\\machine\printer

I could not get that to work for my current situation. So I wrote a Delphi program that did the same.

You can down load it here.
PrinterManipulation.zip

You can use this next source code clip instead of downloading if you like. It assumes there are three buttons on the page and one listbox on a form named Form1. After creating those controls, select all of the pascal source text AFTER the “unit” line and paste this source code over top of it. After that, double click on all of the buttons, compile and you’ll have a peice of running code.

[delphi]
// ****************************************************************************
// u_PrinterManipulation.pas 12/Dec/2006
// Written by Brian Layman
// Visit him at http://www.TheCodeCave.com
//
// A quick program to demonstrate the deletion of a printer.
//
// Usage: PrinterManipulation.exe Just click on the button 1 to populate and
// select a printer off of the list. Use button2 or button3 for two
// different deletion methods. Double clicking the list is the same as
// clicking button3.
//
// History:
// 04/Dec/2006 – BL – Created
//
// ****************************************************************************
interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
Button2: TButton;
Label1: TLabel;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; // TForm1

var
Form1: TForm1;

implementation

{$R *.DFM}
uses
WinSpool, Printers;

type
{******************************************************************************
TPrinterDevice
******************************************************************************}
TPrinterDevice = class
Driver, Device, Port: String;
constructor Create(ADriver, ADevice, APort: PChar);
function IsEqual(ADriver, ADevice, APort: PChar): Boolean;
end; // TPrinterDevice

{******************************************************************************
Create
******************************************************************************}
constructor TPrinterDevice.Create(ADriver, ADevice, APort: PChar);
begin // Create
inherited Create;
Driver := ADriver;
Device := ADevice;
Port := APort;
end; // Create

{******************************************************************************
IsEqual
******************************************************************************}
function TPrinterDevice.IsEqual(ADriver, ADevice, APort: PChar): Boolean;
begin // IsEqual
Result := (Device = ADevice) and ((Port = ”) or (Port = APort));
end; // IsEqual

{******************************************************************************
TForm1
******************************************************************************}
{******************************************************************************
Button1Click
******************************************************************************}
procedure TForm1.Button1Click(Sender: TObject);
var
indx: Integer;
begin // Button1Click
ListBox1.Clear;
for indx := 0 to (Printer.Printers.Count – 1)
do ListBox1.Items.Add(Printer.Printers[indx]);
end; // Button1Click

{******************************************************************************
ListBox1Click
******************************************************************************}
procedure TForm1.ListBox1Click(Sender: TObject);
var
hPrinter : Cardinal;
PrinterDef: PRINTER_DEFAULTS;
pPrinterName: PChar;
begin // ListBox1Click
pPrinterName := PChar(ListBox1.Items[ListBox1.Itemindex]);
FillChar(PrinterDef, sizeof(PrinterDef), #0);
PrinterDef.DesiredAccess := PRINTER_ALL_ACCESS;

if (OpenPrinter(pPrinterName, hPrinter, @PrinterDef))
then begin
if DeletePrinter(hPrinter)
then ShowMessage(‘Deletion Succcesful’);
ClosePrinter(hPrinter);
end
else ShowMessage(‘Could not open’);
end; // ListBox1Click

{******************************************************************************
Button2Click
******************************************************************************}
procedure TForm1.Button2Click(Sender: TObject);
var
ADevice: PChar;
PrinterHandle: THandle;
begin // Button2Click
with TPrinterDevice(Printer.Printers.Objects[ListBox1.ItemIndex])
do begin
GetMem(ADevice, Length(Device));
StrCopy(ADevice, PChar(Device));
end;
OpenPrinter(ADevice, PrinterHandle, nil);
if DeletePrinter(PrinterHandle) then ShowMessage(‘Deletion Succcesful’);
ClosePrinter(PrinterHandle);
FreeMem(ADevice);
end; // Button2Click

end.
[/delphi]

Notes on Microsoft/Novell Anouncement: SUSE Linux/Windows Interoperablity

(Article Draft – Corrections will be made to spelling and grammar – These views are mine coming as fast as I can type with the live announcement. I apologies for any typos/misquotes/misinterpretations.)

Microsoft and Novell made an abrupt disclosure via their web cast site that there would be a VERY IMPORTANT announcement. That announcement occurred at 2:19pm PST/5:19pmEST. This announcement is important to large scale Enterprise and Server/datacenter operators as well as the developer community. It offers more choices, opportunties and technologies to IT operators around the world.

You may view the WebCast session in its entirety using any with these links:

Please, as you listen to the session, if I can enhance or correct any of my notes, please let me know in a comment on this post.
Continue reading Notes on Microsoft/Novell Anouncement: SUSE Linux/Windows Interoperablity