Office Systems Developer

Joao Livio (Portugal)
Visual Studio 2010 - VSTO (VB) Access 2010 Template

I was converting some projects, and i was stuck in a VSTO Add-In, so i built the VB Template for Microsoft Access 2010.

Work’s with Visual Studio 2010, if anyone want to change it to C# fell free to do it, if you can share it leave a comment, thanks.

Multi-threading in VSTO

I was facing some problems regarding multi-tasks in VSTO, so i came up with this.

f189506

The first problem was understand that all calls into the Office OM will be serialized so while one thread is calling into Office, the remaining threads would be blocked from doing so because Office object model is not thread safe, but if you are calling into a component that is thread-safe, then COM doesn't need to get in the way and concurrency is allowed. The issue that you need to understand is how much time your threads will spend being blocked and whether that will invalidate the performance gain you are hoping for.  If your tasks are truly self-contained (or call into Free Threaded components) then you won't blocked by COM if you run them on background threads.

 As Geoff Darst from the Microsoft VSTO Team explain:

“It sounds like you might benefit from reviewing the COM threading documentation which can be found here: http://windowssdk.msdn.microsoft.com/en-us/library/ms693344.aspx.  Hopefully, that will fill in any of the gaps in your reading of other threads.

It is possible to do multi-threading in VSTO solutions regardless of whether your threads interact with the Office OM.  However, in the latter case, you need to implement IMessageFilter (the COM version, not System.Windows.Forms version) and you need to understand that all calls into the Office OM will be serialized so while one thread is calling into Office, the remaining threads would be blocked from doing so.

All of this is because the Office object model isn't thread safe.  Since COM can't control the fact that a client might try to call a non-thread safe server with multiple threads, it does the next best thing which is to serialize the calls.  On the other hand, if you are calling into a component that is thread-safe, then COM doesn't need to get in the way and concurrency is allowed.

As I said, it is always possible to use multiple threads in VSTO.  The issue that you need to understand is how much time your threads will spend being blocked and whether that will invalidate the performance gain you are hoping for.  If your tasks are truly self-contained (or call into Free Threaded components) then you won't blocked by COM if you run them on background threads.” 

Geoff Darst, Microsoft VSTO Team, Source: VSTO Forum

 Readings

Processes, Threads, and Apartments

http://msdn.microsoft.com/en-us/library/ms693344(VS.85).aspx

Choosing the Threading Model

Single-Threaded Apartments

Multithreaded Apartments

Single-Threaded and Multithreaded Communication

In-Process Server Threading Issues

Accessing Interfaces Across Apartments

VSTO - Detect if Access Database is Open

How to know if a access database is open within VSTO

VB.NET

Private Shared _oAccess As Microsoft.Office.Interop.Access.Application
''' <summary>
'''
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function IsAccessDatabaseOpen() As Boolean
Try
_oAccess = CType(Marshal.GetActiveObject("Access.Application"), Microsoft.Office.Interop.Access.Application)
Select Case _oAccess.CurrentProject.Connection.ToString
Case Nothing
Return False
Case Else
Return True
End Select
Catch ex As Exception
Thrown;
Finally
Marshal.ReleaseComObject(_oAccess)
End Try
End Function
 
C#
 
Microsoft.Office.Interop.Access.Application _oAccess;


// '' <summary>
// ''
// '' </summary>
// '' <returns></returns>
// '' <remarks></remarks>
public static bool IsAccessDatabaseOpen() {
try {
_oAccess = ((Microsoft.Office.Interop.Access.Application)
(Marshal.GetActiveObject("Access.Application")));
switch (_oAccess.CurrentProject.Connection.ToString) {
case null:
return false;
break;
default:
return true;
break;
}
}
catch (Exception ex) {
Thrown;
}
finally {
Marshal.ReleaseComObject(_oAccess);
}
}



Simulating DAvg() equivalent to Microsoft Access

I was writing a ClassLibrary to COM Interop and this one came up. This was original whiten to use with JET (VBA and VB6)

C#

public object DAvg(string connectionString, string expression, string domain, string criteria)
{

var strSQL = "Select " + expression + " As ThisValue" +
" From " + domain +
" Where " + criteria;
using (var con = new OleDbConnection(connectionString))
{
using (var da = new OleDbDataAdapter(strSQL, con))
{
using (var dt = new DataTable())
{
da.Fill(dt);
int i;
double sum = 0;
for (i = 0; (i <= dt.Rows.Count -1); i++)
{
sum = Convert.ToDouble(dt.Rows[i].ItemArray[0].ToString()) + sum;
}
return sum / i;
}
}
}
}
 
VB.NET
 
Public Function DAvg(ByVal connectionString As String, ByVal expression As String, ByVal domain As String, ByVal criteria As String) As Object

Dim strSQL = "Select " + expression + " As ThisValue" + _
" From " + domain + _
" Where " + criteria
Using con = New OleDbConnection(connectionString)
Using da = New OleDbDataAdapter(strSQL, con)
Using dt = New DataTable()
da.Fill(dt)
Dim i As Integer
Dim sum As Double = 0
i = 0
While (i <= dt.Rows.Count - 1)
sum = Convert.ToDouble(dt.Rows(i).ItemArray(0).ToString()) + sum
i += 1
End While
Return sum / i
End Using
End Using
End Using
End Function


Visual Studio Class Library para o Microsoft Access – C# (Parte1)

Nesta série de vamos compreender como criar, gerir e implementar um Biblioteca (Class Library) para o Microsoft Access. Vamos utilizar o Visual Studio 2008, C#, Visual Basic e o Microsoft Access 2007.

Estes exemplos provêm da Class Library que criei este ano e que publiquei no Codeplex > aqui

Porque implementar uma Biblioteca de Classes no Microsoft Access?

Se implementarmos uma Classe e expormos a mesma, estamos a permitir que o Microsoft Access por si possa utilizar os seus recursos , ou seja, podemos utilizar as facilidades do Microsoft Framework no Código VBA, bastando para tal adicionar uma referência para o DLL. Podemos também utiliza-la em outro Projecto Visual Studio como por exemplo um Add-in.

 

Máquina cliente Requisitos 

Microsoft Access 2007

Microsoft Framework 2.0 ou 3.5

Vamos necessitar das seguintes referências:

Microsoft Office 12.0 Object Library

Interop.Microsoft.Office.Interop.Access

No Microsoft Access

Ukase Add-ins

O Básico

  1. Criar A Biblioteca
  2. Configurações iniciais
  3. Definições de Visibilidade COM
  4. A Primeira Propriedade
  5. Implementação COM

Código

A Classe

[ComVisible(true)]
[Guid("82382232-F1D7-4048-A1E0-F2879BCA0610")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("M3CommonFunctions")]
public class M3CommonFunctions : IM3CommonFunctions

Propriedade

Assembly asm = Assembly.GetExecutingAssembly();

public Version GetMACLVersion
{
get { return asm.GetName().Version; }
}
 
Interface
 
[Guid("4ECAAC7B-711C-4ac0-BBFC-58C4E3E8EE56")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IM3CommonFunctions
{
[DispId(1)]
Version GetMACLVersion { get; }
}

VISUAL BASIC
 
<ComClass(Namespace_Comuns.ClassId, Namespace_Comuns.InterfaceId, Namespace_Comuns.EventsId)> _
Public Class Namespace_Comuns

Private m_VersaoBiblioteca As String

#Region "COM GUIDs"
' These GUIDs provide the COM identity for this class
' and its COM interfaces. If you change them, existing
' clients will no longer be able to access the class.
Public Const ClassId As String = "6b6c0965-e6a5-4089-afbb-0ec787efe024"
Public Const InterfaceId As String = "d8c53404-58b4-4f28-9d2f-4912f8cb6723"
Public Const EventsId As String = "165be10c-a5a6-4d57-ac49-0ad7a8bd1cd5"
#End Region

' A creatable COM class must have a Public Sub New()
' with no parameters, otherwise, the class will not be
' registered in the COM registry and cannot be created
' via CreateObject.
Public Sub New()
MyBase.New()
End Sub

Public ReadOnly Property VersaoBiblioteca() As String
Get
m_VersaoBiblioteca = My.Application.Info.Version.ToString
Return m_VersaoBiblioteca
End Get
End Property
End Class



 
VBA
 
Private Sub Command0_Click()
Dim obj As New Ukase.M3CommonFunctions
MsgBox obj.GetMACLVersion
End Sub

 Screencast
Get Access ADOX Synonymous from Framework DataColumn
static ADOX.DataTypeEnum GetAccessFormats(DataColumn col)
{
switch (col.DataType.Name)
{
case "Boolean":
return ADOX.DataTypeEnum.adBoolean;
case "Byte":
return ADOX.DataTypeEnum.adUnsignedTinyInt;
case "Char":
return ADOX.DataTypeEnum.adVarWChar;
case "DateTime":
return ADOX.DataTypeEnum.adDate;
case "Decimal":
return ADOX.DataTypeEnum.adDecimal;
case "Double":
return ADOX.DataTypeEnum.adDouble;
case "Int16":
return ADOX.DataTypeEnum.adSmallInt;
case "Int32":
return ADOX.DataTypeEnum.adInteger;
case "Int64":
return ADOX.DataTypeEnum.adInteger;
case "SByte":
return ADOX.DataTypeEnum.adUnsignedSmallInt;
case "Single":
return ADOX.DataTypeEnum.adSingle;
case "String":
return ADOX.DataTypeEnum.adVarWChar;
case "TimeStamp":
return ADOX.DataTypeEnum.adGUID;
default:
return ADOX.DataTypeEnum.adUserDefined;
}
}

You can also ENUM the options

[Flags]
public enum ADOXFields
{
AccessText = DataTypeEnum.adVarWChar,
AccessMemo = DataTypeEnum.adLongVarWChar,
AccessNumericByte = DataTypeEnum.adUnsignedTinyInt,
AccessNumericInteger = DataTypeEnum.adSmallInt,
AccessNumericLongInteger = DataTypeEnum.adInteger,
AccessNumericSinglePrecision = DataTypeEnum.adSingle,
AccessNumericDoublePrecision = DataTypeEnum.adDouble,
AccessNumericReplicatieId = DataTypeEnum.adGUID,
AccessNumericDecimal = DataTypeEnum.adNumeric,
AccessDateTime = DataTypeEnum.adDate,
AccessCurrency = DataTypeEnum.adCurrency,
AccessAutoNumber = DataTypeEnum.adInteger,
AccessYesNo = DataTypeEnum.adBoolean,
AccessHyperLink = DataTypeEnum.adLongVarWChar
}

VB.NET

Public Shared Function GetAccessFormats(ByVal col As DataColumn) As ADOX.DataTypeEnum
Select Case (col.DataType.Name)
Case "Boolean"
Return ADOX.DataTypeEnum.adBoolean
Case "Byte"
Return ADOX.DataTypeEnum.adUnsignedTinyInt
Case "Char"
Return ADOX.DataTypeEnum.adVarWChar
Case "DateTime"
Return ADOX.DataTypeEnum.adDate
Case "Decimal"
Return ADOX.DataTypeEnum.adDecimal
Case "Double"
Return ADOX.DataTypeEnum.adDouble
Case "Int16"
Return ADOX.DataTypeEnum.adSmallInt
Case "Int32"
Return ADOX.DataTypeEnum.adInteger
Case "Int64"
Return ADOX.DataTypeEnum.adInteger
Case "SByte"
Return ADOX.DataTypeEnum.adUnsignedSmallInt
Case "Single"
Return ADOX.DataTypeEnum.adSingle
Case "String"
Return ADOX.DataTypeEnum.adVarWChar
Case "TimeStamp"
Return ADOX.DataTypeEnum.adGUID
Case Else
Return ADOX.DataTypeEnum.adUserDefined
End Select
End Function

Posted: Wed, Apr 29 2009 21:55 by Joao Livio | with no comments
Filed under: , ,
VSTO (Access) – Convert a Field to Upper, Lower, Proper
public string ConvertFieldToUpper(string MyTable, string MyField)
{
Access.Application oAccess = ((Access.Application)
(Marshal.GetActiveObject("Access.Application")));
try
{
string strSQL;
strSQL = String.Format("UPDATE {0} SET {1} = UCase([{1}])", MyTable, MyField);

oAccess.DoCmd.RunSQL(strSQL.ToString(),null);
return "OK";
}
catch (Exception)
{
throw;
}
finally
{
Marshal.ReleaseComObject(oAccess);
}
}


public string ConvertFieldToLower(string MyTable, string MyField)
{
Access.Application oAccess = ((Access.Application)
(Marshal.GetActiveObject("Access.Application")));
try
{
string strSQL;
strSQL = String.Format("UPDATE {0} SET {1} = LCase([{1}])", MyTable, MyField);

oAccess.DoCmd.RunSQL(strSQL.ToString(), null);
return "OK";
}
catch (Exception)
{
throw;
}
finally
{
Marshal.ReleaseComObject(oAccess);
}
}


public string ConvertFieldToProper(string MyTable, string MyField)
{
Access.Application oAccess = ((Access.Application)
(Marshal.GetActiveObject("Access.Application")));
try
{
string strSQL;
strSQL = String.Format("UPDATE {0} SET {1} = STRCONV([{1},3])", MyTable, MyField);

oAccess.DoCmd.RunSQL(strSQL.ToString(), null);
return "OK";
}
catch (Exception)
{
throw;
}
finally
{
Marshal.ReleaseComObject(oAccess);
}
}

VSTO (Access) a Simple Database initialization
/// <summary>
///
/// </summary>
/// <param name="hideNavigationPane"></param>
/// <param name="myUIName"></param>
/// <param name="myUIXML"></param>
/// <returns>True/False</returns>
public bool InitializeDatabase(bool hideNavigationPane,
string myUIName, string myUIXML)
{
Access.Application oAccess = ((Access.Application)
(Marshal.GetActiveObject("Access.Application")));
try
{
oAccess.SetOption("DesignWithData", false);
oAccess.SetOption("Perform Name AutoCorrect", false);
oAccess.SetOption("Track Name AutoCorrect Info", false);
oAccess.SetOption("Auto Compact", false);
oAccess.SetOption("Confirm Record Changes", false);
oAccess.SetOption("Confirm Document Deletions", false);
oAccess.SetOption("Confirm Action Queries", false);

oAccess.LoadCustomUI(myUIName, myUIXML);

if (hideNavigationPane == true)
{
oAccess.DoCmd.RunCommand(Access.AcCommand.acCmdWindowHide);
}
return true;
}
catch (Exception)
{
throw;
}
finally
{
Marshal.ReleaseComObject(oAccess);
}
}

VSTO (Access) – Convert a Report to XPS
public bool ConvertReportToXPS(string myReport, string XPSFileName)
{
Access.Application oAccess = ((Access.Application)
(Marshal.GetActiveObject("Access.Application")));
try
{
oAccess.DoCmd.OutputTo(Access.AcOutputObjectType.acOutputReport,
myReport, Access.Constants.acFormatXPS, XPSFileName,
System.Type.Missing, System.Type.Missing,
System.Type.Missing);
return true;
}
catch (Exception)
{
throw;
}
finally
{
Marshal.ReleaseComObject(oAccess);
}
}

VSTO (Access) Detect if tables are similar
public bool TablesAreEqual(string MyTableSource, string 
MyTableToCompare, string MyIndexField)
{
try
{
OleDbConnection cnn;
using (DataSet ds = new DataSet())
{
OleDbDataAdapter da;
string cs =
oAccess.CurrentProject.Connection.ToString();
string strSQL =
String.Format("SELECT * FROM {0} LEFT JOIN {1} ON {0}.{2} = {1}.{2}WHERE {1}.{2} Is Null"
, MyTableSource, MyTableToCompare, MyIndexField);
cnn = new OleDbConnection(cs);
da = new OleDbDataAdapter(strSQL, cnn);
da.Fill(ds);
if (ds.Tables[0].Rows.Count <= 0)
return true;
else
return false;
}
}
catch (Exception)
{
throw;
}
finally
{
Marshal.ReleaseComObject(oAccess);
}
}

VSTO (Access) How to Backup the Current project?

Access.Application oAccess = ((Access.Application)
                (Marshal.GetActiveObject("Access.Application")));

// ----------------------------------------------------------------------------------------
// Author: Joao Tito Livio
// Company: MACL
// Assembly version: 0.0.*
// Date: 21-04-2009
// Time: 23:47
// Project Item Name: M3DatabaseUtilities.cs
// Project Item Filename: M3DatabaseUtilities.cs
// Project Item Kind: Code
// Class FullName: Macl.M3DatabaseUtilities
// Class Name: M3DatabaseUtilities
// Class Kind Description: Class
// Class Kind Keyword: class
// Procedure FullName: Macl.M3DatabaseUtilities.BackupCurrentDatabase
// Procedure Name: BackupCurrentDatabase
// Procedure Kind Description: Function
// Procedure Kind Keyword:
// Function Return Type Name: Boolean
// Function Return Type FullName: System.Boolean
// Function Return Type Alias: bool
// Purpose: Backup the Current database, CAN BE IN USE
// Parameters:
// - MyDestinationpathAndFile (string)() : Path and File (c:\backup.accdb")
// ----------------------------------------------------------------------------------------
public bool BackupCurrentDatabase(string MyDestinationpathAndFile)
{
try
{
Access.Application oAccess = ((Access.Application)
(Marshal.GetActiveObject("Access.Application")));

File.Copy(oAccess.CurrentProject.FullName,
MyDestinationpathAndFile);
return true;
}
catch (Exception)
{
throw;
}
finally
{
Marshal.ReleaseComObject(oAccess);
}
}



VSTO (Access) How to execute a SQL Statement from a File?
public bool ExecuteSqlFromFile(String MyConnectionString, String MyTextFilePath)
{
using (OleDbConnection sqlConnection = new OleDbConnection(MyConnectionString))
{
OleDbCommand cmd = new OleDbCommand();
try
{
using (StreamReader fh = new StreamReader(MyTextFilePath))
{
String MyText;
string s;
while ((s = fh.ReadLine()) != null)
MyText = s;
fh.Close();
cmd.CommandText = s;
}
cmd.CommandType = CommandType.Text;
cmd.Connection = sqlConnection;
sqlConnection.Open();
cmd.ExecuteNonQuery();
sqlConnection.Close();
return true;
}
catch (Exception)
{
throw;
}
finally
{
sqlConnection.Close();
cmd.Dispose();
}
}
}

VSTO (Access) – How to return a RecordSet from a OleDb Provider?
 

// ----------------------------------------------------------------------------------------
// Author: Joao Tito Livio
// Company: MACL
// Assembly version: 0.0.*
// Date: 21-04-2009
// Time: 23:55
// Project Item Name: M3Data.cs
// Project Item Filename: M3Data.cs
// Project Item Kind: Code
// Class FullName: Macl.M3Data
// Class Name: M3Data
// Class Kind Description: Class
// Class Kind Keyword: class
// Procedure FullName: Macl.M3Data.ReturnRecordset
// Procedure Name: ReturnRecordset
// Procedure Kind Description: Function
// Procedure Kind Keyword:
// Function Return Type Name: Recordset
// Function Return Type FullName: ADODB.Recordset
// Function Return Type Alias: Recordset
// Purpose: Return a recordset from any OleDb provider
// Parameters:
// - MyConnectionString (string)() : Connection strin for the OleDb Conenction
// - MyTableOrSQL (string)() : Can be a Table or a SQL statement
// - MyCursorType (CursorTypeEnum)() : http://msdn.microsoft.com/en-us/library/ms677593(VS.85).aspx
// ----------------------------------------------------------------------------------------
public ADODB.Recordset ReturnRecordset(String MyConnectionString, String MyTableOrSQL,
ADODB.CursorTypeEnum MyCursorType)
{
ADODB.Connection cnn = new ADODB.Connection();
ADODB.Recordset rs = new ADODB.Recordset();

try
{
cnn.ConnectionString = MyConnectionString;
cnn.Open(null, null, null, 0);
//}
rs.Open(MyTableOrSQL, cnn, MyCursorType, ADODB.LockTypeEnum.adLockOptimistic, -1);
return rs;
}
catch (Exception)
{
throw;
}
}

VSTO (Access) how to create a Table with fields in a Access Database (ADOX and JET SQL)

/// <summary>
///
/// </summary>
/// <param name="MyPath"></param>
/// <returns>True/False</returns>
public bool GenerateLogDatabase(string myPath)
{
CatalogClass cat = new CatalogClass();
string strSQL;
string cs;

try
{
cs = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + myPath + ";" +
"Jet OLEDB:Engine Type=5";

strSQL = "CREATE TABLE Issues (mID AUTOINCREMENT, mUser TEXT(100) NOT NULL " +
", mError TEXT(100) NOT NULL, " +
"mDescription TEXT(100) NOT NULL, mDate DATETIME NOT NULL)";

cat.Create(cs);

using (OleDbConnection cnn = new OleDbConnection(cs))
{
OleDbCommand cmd = new OleDbCommand();
try
{
cmd.CommandText = strSQL;
cmd.CommandType = CommandType.Text;
cmd.Connection = cnn;
cnn.Open();
cmd.ExecuteNonQuery();
cnn.Close();
return true;
}
catch (Exception)
{
throw;
}
finally
{
cnn.Close();
cmd.Dispose();
}
}
}
catch (Exception)
{
throw;
}
finally
{
Marshal.FinalReleaseComObject(cat);
}
}

SharePoint Designer 2007 is now FREE

Great News

SharePoint Designer 2007 is now FREE!

Get it here

My recent project with Libraries to use in Access 2007
 
NOW MACL IS FREE AND IS IN CODEPLEX
 
My recent project with Libraries to use in Access 2007
 
Project Description
Improved Microsoft Access Class Libraries *DLL's* with utilities and Data Access.
---------------------------------------------------------------------------------------------
C#, Framework 2.0, 3.5

(Interop API Extensions)

The MACL Interop API Extensions tool uses features found in the .NET Framework 2.0 for now in the Alpha Version and its to be oriented to Framework 3.5 in the Beta Version. MACL Wraps the Access object model providing a more productive environment for the VBA developer. Specifically, it employs extension methods, functions, properties and a most effective data management relative to OLEDB Providers, like returning a single Recordset from any OLEDB Provider using ADODB . It is not a complete managed API for Access, it will reach there, but is designed to augment the raw object model in useful ways.

The Access Interop API Extensions, with its simplified and strongly-typed API, allows VBA developers to be as productive in this context as VBA developers.
The code was original developed in C# 3.0 and is divided in different classes, all classes are in constant update.

Forum Support http://forum.macl.menos3.net
Project Blog (Code Samples) http://macl.menos3.net
Online Documentation: http://www.menos3.net/pp
The DEVEXPRESS Wonder

Today i want to talk about my experience with the DevExpress Components. I use it for about 2 years and the results are amazing, bellow is some samples about my last application. I can localize all components to Portuguese that is great!

JUST SHIFT TO: http://www.devexpress.com/Products/index.xml

AMAZING SEARCH

 

GREAT GRID CONTROL

 

MORE

Today, software consumers demand more than ever before from developers. The pressure to deliver more features with higher quality in less time has never been greater. Developer Express engineers components and IDE tools for Visual Studio® .NET to help developers and managers meet these increased demands for quality and functionality, by boosting productivity while eliminating the repetition that erodes precious creativity.

ANN: Removal of Service Packs blockers

Embargoed until 1.29.09 10:00am PST.  Actual email not to be reposted, information contained is for public disclosure once Embar

BEGIN

Dear MVP Community,

---------------------------------------------------------------------------

Abstract

If you are active in the IT Pro or Enterprise community, this announcement will be important to you.  On January 29, 2009,  Microsoft will announce the Blocker Tool for Windows Vista SP1 and Windows XP SP3 will be removed on April 28th and May 19th, respectively. 

Our goal in announcing the removal of the blockers early is to provide IT Pros with an early notification to ensure they’re prepared to deploy the appropriate service pack when the blockers expire.  This also provides technical communities with early information so that they may plan accordingly to assist customers.

---------------------------------------------------------------------------

Background

Enterprises currently using the service pack blocker tool for either Windows Vista SP1 or Windows XP SP3 will be notified of the blocker tool’s removal and be prompted to install Windows Vista SP1 or Windows XP SP3 as appropriate. Microsoft recognizes the need for IT Pros to have this type of information in advance and wants to provide them with an early heads up to ensure they’re prepared to deploy their appropriate service pack when the blockers expire.

---------------------------------------------------------------------------

Rationale

Service Packs will not automatically install on a machine even after the Service Pack Blocker tool expires. For service packs, you must accept the offering before installation will start. If Automatic Update is turned on, WU will alert you that it has an important update to install.  If you do not want to install the update (Service Pack) simply decline to install and/or hide the update.  If you do not have AU turned on, the service pack will not be offered until you open Windows Update and “Check for Updates.”

---------------------------------------------------------------------------

Effective dates

The expiration date for the Service Pack Blocker Tool for Windows Vista SP1 is April 28, 2009; for Windows XP SP3 the tool expires May 19, 2009.

---------------------------------------------------------------------------

Location

All Geographies

---------------------------------------------------------------------------

Who is affected

IT Pro and Enterprise customers

---------------------------------------------------------------------------

Actions Requested

Provide support for IT Pro and Enterprise customers who have inquiries.

---------------------------------------------------------------------------

Additional Information

For more information on Windows product support lifecycles, please visit the following site: http://support.microsoft.com/gp/lifecycle#ServicePackSupport

Windows Resources:

Windows Team Blog: http://windowsteamblog.com/

Springboard on TechNet: http://blogs.technet.com/springboard/default.aspx

END

You may also want to read at

http://www.microsoft.com/downloads/details.aspx?FamilyId=D7C9A07A-5267-4BD6-87D0-E2A72099EDB7&displaylang=en

Important - Critical Security Information

PLEASE share with the Public

Dear MVP,

---------------------------------------------------------------------------

 

Actions Requested:

 

Win32/Conficker.B/Downadup infections

 

Please offer these links and resources to members of your community to help mitigate this threat.

MS08-067

Malicious Software Removal tool

History: Win32/Conficker.B

 

---------------------------------------------------------------------------

 

Abstract:

Based on feedback from MVPs  and other sources, we are concerned about the rise in reported infections due to the worm Win32/Conficker.B also known as “Downadup.”  Though systems which have already applied the out-of-band released MS08-067 in October 2008 are protected, unpatched system user have experienced system lockout and other problems. 

 

Last week, we released a version of the Malicious Software Removal tool (MSRT) that can help remove variants of Win32/Conficker and other resources.  Please share this information in your communities to help address this threat.

---------------------------------------------------------------------------

Background

Win32/Conficker.B exploits a vulnerability in the Windows Server service (SVCHOST.EXE) for Windows 2000, Windows XP, Windows Vista, Windows Server 2003, and Windows 2008. While Microsoft addressed this issue in October with Microsoft Security Bulletin MS08-067, and Forefront antivirus and OneCare (as well as other vendor’s anit-virus products) helped protect against infections, many systems that have not been patched manually through Server Update Services and Microsoft/Windows Update or through Automatic Updates have recently come under attack by this worm.  Attacked systems may lock out users, disable our update services and block access to security-related Web sites:

 

In response to this threat, Microsoft has:

·          Updated the January version of the MSFT to detect and remove variants of Win32/Conficker.B.  You can download this version from the MSRT from either the Microsoft Update site  or through its associated Knowledge Base article.

·          Created the KB article 962007 “Virus alert about the Win32/Conficker.B worm” to provide public details on the symptoms and removal methods available to address this issue.

·          Announced the release of the items and the virus threat itself on the Microsoft Malware Protection Center blog.

 

It is our hope that these resources can assist you in resolving issues with unpatched, infected systems and that you can apply MS08-067 to any other unpatched systems as soon as possible to avoid this threat.

 

 

DevDays 2009
Participe no grande evento técnico do ano e aproveite ao máximo a agenda do DevDays!

São 2 dias de conteúdos técnicos avançados, com mais de 50 sessões e 40 laboratórios, onde irá conhecer as mais recentes novidades da tecnologia Microsoft e contactar com reconhecidos especialistas das nossas Comunidades Técnicas.

 

> 2 dias de conteúdos técnicos avançados
> Mais de 50 sessões e cerca de 40 laboratórios
> Um evento para Programadores, Arquitectos e Designers


Contacte com Especialistas
Partilhe experiências, troque ideias, e aprenda com quem tem desafios semelhantes aos seus.

 

Inspire-se,  divirta-se e mergulhe na Inovação
Encontre as melhores ideias e faça parte deste momento!

Aprenda sobre as mais recentes novidades tecnológicas como o Windows 7, Internet Explorer 8, Windows Azure e aprofunde os seus conhecimentos sobre desenvolvimento, web, design e experiência de utilização.

 

Venha ao DevDays!

 

ñ          Saiba como  o TeamSystem pode melhorar o desempenho da sua Equipa, tornando-a mais produtiva e eficiente

ñ          A nova experiência de interacção digital com a Microsoft Surface

ñ          Novos modelos de negócio potenciados pelo Windows Azure

ñ          Veja como o Windows 7 e o IE8 elimina barreiras entre software, services e dispositivos e trazem ritmo acrescido ao seu dia-a-dia e da sua empresa

ñ          Biztalk 2009 com uma solução de RFID muito interessante

ñ          Consiga um novo nível de soluções Web com o Silverlight

ñ          O potencial da informação geo-referenciada com o SQL Server 2008

 

Principais Conteúdos Temáticos
> Visual Studio 10 e .Net 4

> Microsoft Surface
> Windows 7 e Internet Explorer 8
> Windows Azure e Azure Services Platform
> Biztalk 2009
> Silverlight e WPF
> SQL Server 2008

> ASP.NET

> Windows Live Services

 

Participe!

Valor de Inscrição: 100€ (com IVA incluído)

More Posts Next page »