Wednesday, November 21, 2012

CTX: Configure Citrix XenApp6 using a Oracle database

The first step before the setup of XenApp 6 on the server is install the Oracle Client 32-bit on the server.

Download the file (Oracle Database 11g Release 2 Client for Microsoft Windows (32-bit)) available at

Descompress the .zip file and run the Setup file.

Then run the XenApp setup and you will see the Oracle option is available.

Thursday, March 01, 2012

Windows 8 Consumer Preview released!

This is the new face of Windows: Windows 8 and Metro GUI. Download (and install!) Windows 8 from

This is an screen shot of Build 8250. Pretty amazing!

Wednesday, February 22, 2012

MS: Determine which version of Office installed

How to determine which version of an Office 2010 product is installed

How to determine which version of a 2007 Office product is installed

How to check the version of Office 2003 products

How to check the version of Office XP

How to determine the version of your Office 2000 program

Monday, February 13, 2012

MS: Hyper-v R2 VM failed to start - Unable to allocate Ram: insufficient system resources - Error 0x800705AA

The Problem:

I have been running lot of VMs on the same Windows 2008 R2 server with Hyper-V role installed since November 2010. I updated server to SP1 a long time ago and keep server updated. No antivirus installed, because this is standalone training server. No Active Directory. Intel Core i7 with 6GB RAM.

On Thursday, I tried to start 4 VMs (usuallyI ran 5 to 7 simultaneous VMs) and when I tried VM #3 I got the following error:

MachineName failed to start
Unable to allocate xxx MB of Ram: insufficient system resources exist to complete the request service (0x800705AA)

So I spent last 4 days going through different tests:
  • Remove video card driver.
  • Disabled all software running on the server (this software was running before)
  • Uninstall all software I can.
  • Check online for similar issues.
  • Modified the cached physical memory reservation (using the registry key), to increase free physical memory.
  • Change memory assignment on VM to dynamic.
  • Applied few hotfixes (KB983289 and KB979149)
  • Check the event viewer for more info
  • Verify I have enough space on all disk partitions
  • Reinstall Hyper-V

Usually I ran for VMs ( 2 x 512MB of RAM + 2 x 768 RAM) and again I was doing this since November 2010.As you can see below there are plenty of memory available.


After 4 days and running out of ideas I posted this issue on the Hyper-V forum and minutes later, Bob Comer a Microsoft MVP Virtual Machine posted that issue was caused by a Google application called GooglecrashHandler.exe

* Open Task Manager and found two process called GooglecrashHandler, killed them and using Autoruns I found they in Task Scheduler. Remove all entries.

* Delete directory D:\Program Files (x86)\Google\Update

* Delete the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\gupdate registry key

* Delete the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\gupdatem registry key

After that I was able to start all VMs. Thanks Bob!

Final Questions:

  • So the first question is how a 64k crap process created by Google can cause a problem like this?
  • Why this crap is installed on my system when I never installed any Google application?
  • And why the damn applications is not show in the Add/Remove Programs in Control Panel?
  • Why developers at Google are so BAD creating programs?
  • And finally: this issue was caused because Google developers are really f****** i***** or this is intentional?
  • Why this process is not considered a spyware or virus for antivirus companies?

Thursday, January 26, 2012

MS: Script Get List .NET Framework version for list of computers

One of my colleague in the WIndows Operations team asked me to create a VBscript to get all .NET Framework Version installed on a list of servers (provided in a .txt file). I created the script using blocks so the team can reuse it for multiples tasks.

To use the script: Cscript NetFramework.vbs , where is the text file with a list of servers or machines.

'--- script start here--
On Error Resume Next

Const HKEY_LOCAL_MACHINE = &H80000002
Dim NetF(10)
Dim Version(10)

NetF(1) = "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322"
Version(1) = "1.1"
NetF(2) = "Software\Microsoft\NET Framework Setup\NDP\v2.0.50727"
Version(2) = "2.0"
NetF(3) = "Software\Microsoft\NET Framework Setup\NDP\v3.0"
Version(3) = "3.0"
NetF(4) = "Software\Microsoft\NET Framework Setup\NDP\v3.5"
Version(4) = "3.5"
NetF(5) = "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client"
Version(5) = "4.0"
NetCount = 5

Set objArgs = WScript.Arguments
if objArgs.Count = 0 then
WScript.Echo "Command line parameters not specified"
WScript.Echo "Usage: Cscript NetFramework.vbs "
end if
ServerList = trim(objArgs(0))
OutputFile = "NetF-Report.csv"

'Create Header
For I=1 to NetCount
Header=Header & "," & Version(I)

'Record loop for servers
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objInFile = objFSO.OpenTextFile(ServerList, 1)
Info=Header & vbcrlf & CSVLine
Do Until objInFile.AtEndOfStream
strLine = objInFile.ReadLine
strComputer = strLine
wscript.echo "Checking machine " & Ucase(strComputer)
Info = Info & GetServerInfo(strComputer) & vbcrlf & CSVLine

'delete existing report file

'create new report file
Set objFile = objFSO.CreateTextFile(OutputFile)
objFile.Write Info

'** Get Server Info **
function GetServerInfo(ServerName)
if Ping(ServerName)=True then
For I=1 to NetCount
if ReadReg(ServerName, RegistryRoot, NetF(I), "Install")=True then
SPVersion=ReadRegValue(ServerName, RegistryRoot, NetF(I), "SP")
if SPVersion>0 then
Result=Result & ",SP" & SPVersion
Result=Result & ",NO SP"
end if
Result=Result & ",No"
end if
Result = Result & ",N/A"
end if
GetServerInfo = Result
end function

'** Read Registry **
Function ReadReg(strComputer, RegistryRoot, strKeyPath, strValueName)
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
objRegistry.GetDWordValue RegistryRoot,strKeyPath,strValueName,strValue
If IsNull(strValue) Then
ReadReg = False
ReadReg = True
End If
End Function

'** Read Registry Value **
Function ReadRegValue(strComputer, RegistryRoot, strKeyPath, strValueName)
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
objRegistry.GetDWordValue RegistryRoot,strKeyPath,strValueName,strValue
ReadRegValue = strValue
End Function

'** Ping Machine **
Function Ping(strHost)
Dim objPing, objRetStatus
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("select * from Win32_PingStatus where address = '" & strHost & "'")

for each objRetStatus in objPing
if IsNull(objRetStatus.StatusCode) or objRetStatus.StatusCode<>0 then
Ping = False
Ping = True
end if
End Function