Microsoft CRM Customization – programming Closed E

Microsoft CRM Customization – programming Closed Email Activity

by: Boris Makushkin

Microsoft CRM is CRM answer from Microsoft and attempt to get market share from Siebel, Oracle and others traditional Client Relationship Management System vendors. Microsoft CRM uses all the spectrum of Microsoft recent technologies: .Net, MS Exchange, MS Outlook, MS SQL Server, Replication, Indexing, Active Directory, Windows 2000/2003 security model, C#, VB.Net, HTML, XML Web Service, XLTP, Javascript to name a few.

Todayกs topic is Activity of email type programming you usually deal with these customizations when you improve Microsoft Exchange CRM connector. How do you create closed activity this is the main discussion topic. We’ll use C#.Net coding

One of the roles of our Exchange Event Handler/Sink is creation MS CRM Closed Activity in handling incoming and outgoing email messages. The interaction with Microsoft CRM uses two approached – using MS CRM SDK (handling inbound and outbound XML messages) and via direct access to MS CRM Database. Let’s first look at the Closed Activity creation algorithm:

1. First we need to understand the entity we need to create activity for: Account, Lead or Contact. The selection should use specific criteria – in our case this is email address:

if ((crmAccount = crmConnector.GetAccount(mailboxFrom)) != null) {

}

else if ((crmContact = crmConnector.GetContact(mailboxFrom)) != null) {

}

else if ((crmLead = crmConnector.GetLead(mailboxFrom)) != null) {

}

2. Then we have to get GUID of MS CRM user, who owns this entity, C# code like this:

crmUser = crmConnector.GetUser(crmAccount.GetOwnerId());

3. Next step is closed Activity creation:

emailId = crmConnector.CreateEmailActivity(

crmUser.GetId(),

Microsoft.Crm.Platform.Types.ObjectType.otAccount, crmAccount.GetId(),

Microsoft.Crm.Platform.Types.ObjectType.otSystemUser, crmUser.GetId(),

crmAccount.GetEmailAddress(), crmUser.GetEmailAddress(), sSubject, sBody);

4. The method to create closed activity:

public Guid CreateEmailActivity(Guid userId, int fromObjectType, Guid fromObjectId, int toObjectType, Guid toObjectId, string mailFrom, string mailTo, string subject, string body) {

try {

log.Debug(กPrepare for Mail Activity Creatingก);

// BizUser proxy object

Microsoft.Crm.Platform.Proxy.BizUser bizUser = new Microsoft.Crm.Platform.Proxy.BizUser();

ICredentials credentials = new NetworkCredential(sysUserId, sysPassword, sysDomain);

bizUser.Url = crmDir + กBizUser.srfก;

bizUser.Credentials = credentials;

Microsoft.Crm.Platform.Proxy.CUserAuth userAuth = bizUser.WhoAmI();

// CRMEmail proxy object

Microsoft.Crm.Platform.Proxy.CRMEmail email = new Microsoft.Crm.Platform.Proxy.CRMEmail();

email.Credentials = credentials;

email.Url = crmDir + กCRMEmail.srfก;

// Set up the XML string for the activity

string strActivityXml = กก;

strActivityXml += กก;

strActivityXml += กก) + กก;

strActivityXml += กก;

strActivityXml += userId.ToString(กBก) + กก;

strActivityXml += กก;

// Set up the XML string for the activity parties

string strPartiesXml = กก;

strPartiesXml += กก;

strPartiesXml += กก + mailTo + กก;

if (toObjectType == Microsoft.Crm.Platform.Types.ObjectType.otSystemUser) {

strPartiesXml += กก + Microsoft.Crm.Platform.Types.ObjectType.otSystemUser.ToString() + กก;

}

else if (toObjectType == Microsoft.Crm.Platform.Types.ObjectType.otAccount) {

strPartiesXml += กก + Microsoft.Crm.Platform.Types.ObjectType.otAccount.ToString() + กก;

}

else if (toObjectType == Microsoft.Crm.Platform.Types.ObjectType.otContact) {

strPartiesXml += กก + Microsoft.Crm.Platform.Types.ObjectType.otContact.ToString() + กก;

}

else if (toObjectType == Microsoft.Crm.Platform.Types.ObjectType.otLead) {

strPartiesXml += กก + Microsoft.Crm.Platform.Types.ObjectType.otLead.ToString() + กก;

}

strPartiesXml += กก+ toObjectId.ToString(กBก) + กก;

strPartiesXml += กก;

strPartiesXml += Microsoft.Crm.Platform.Types.ACTIVITY_PARTY_TYPE.ACTIVITY_PARTY_TO_RECIPIENT.ToString();

strPartiesXml += กก;

strPartiesXml += กก;

strPartiesXml += กก;

strPartiesXml += กก + mailFrom + กก;

if (fromObjectType == Microsoft.Crm.Platform.Types.ObjectType.otSystemUser) {

strPartiesXml += กก + Microsoft.Crm.Platform.Types.ObjectType.otSystemUser.ToString() + กก;

}

else if (fromObjectType == Microsoft.Crm.Platform.Types.ObjectType.otAccount) {

strPartiesXml += กก + Microsoft.Crm.Platform.Types.ObjectType.otAccount.ToString() + กก;

}

else if (fromObjectType == Microsoft.Crm.Platform.Types.ObjectType.otContact) {

strPartiesXml += กก + Microsoft.Crm.Platform.Types.ObjectType.otContact.ToString() + กก;

}

else if (fromObjectType == Microsoft.Crm.Platform.Types.ObjectType.otLead) {

strPartiesXml += กก + Microsoft.Crm.Platform.Types.ObjectType.otLead.ToString() + กก;

}

strPartiesXml += กก+ fromObjectId.ToString(กBก) + กก;

strPartiesXml += กก;

strPartiesXml += Microsoft.Crm.Platform.Types.ACTIVITY_PARTY_TYPE.ACTIVITY_PARTY_SENDER.ToString();

strPartiesXml += กก;

strPartiesXml += กก;

strPartiesXml += กก;

log.Debug(strPartiesXml);

// Create the email object

Guid emailId = new Guid(email.Create(userAuth, strActivityXml, strPartiesXml));

return emailId;

}

catch (System.Web.Services.Protocols.SoapException e) {

log.Debug(กErrorMessage: ก + e.Message + ก ก + e.Detail.OuterXml + ก Source: ก + e.Source);

}

catch (Exception e) {

log.Debug(e.Message + ก

ก + e.StackTrace);

}

return new Guid();

}

5. To make the activity just created be shown correctly you need to setup it’s flags according to MS CRM standards:

public void UpdateActivityCodes(Guid emailId) {

try {

OleDbCommand command = conn.CreateCommand();

command.CommandText = กUPDATE ActivityBase SET DirectionCode = (?), StateCode = (?), PriorityCode = (?) WHERE ActivityId = (?)ก;

command.Prepare();

command.Parameters.Add(new OleDbParameter(กDirectionCodeก, Microsoft.Crm.Platform.Types.EVENT_DIRECTION.ED_INCOMING));

command.Parameters.Add(new OleDbParameter(กStateCodeก, Microsoft.Crm.Platform.Types.ACTIVITY_STATE.ACTS_CLOSED));

command.Parameters.Add(new OleDbParameter(กPriorityCodeก, Microsoft.Crm.Platform.Types.PRIORITY_CODE.PC_MEDIUM));

command.Parameters.Add(new OleDbParameter(กActivityIdก, emailId));

log.Debug(กPrepare to update activity code ก + emailId.ToString(กBก) + ก in ActivityBaseก);

command.ExecuteNonQuery();

}

catch(Exception e) {

log.Debug(e.Message + ก

ก + e.StackTrace);

}

}

public void UpdateActivityQueueCodes(Guid emailId, Guid queueId) {

try {

OleDbCommand command = conn.CreateCommand();

command.CommandText = กUPDATE QueueItemBase SET Priority = (?), State = (?), QueueId = (?) WHERE ObjectId = (?)ก;

command.Prepare();

command.Parameters.Add(new OleDbParameter(กPriorityก, Microsoft.Crm.Platform.Types.PRIORITY_CODE.PC_MEDIUM));

command.Parameters.Add(new OleDbParameter(กStateก, Microsoft.Crm.Platform.Types.ACTIVITY_STATE.ACTS_CLOSED));

command.Parameters.Add(new OleDbParameter(กQueueIdก, queueId));

command.Parameters.Add(new OleDbParameter(กObjectIdก, emailId));

log.Debug(กPrepare to update activity queue code ก + emailId.ToString(กBก) + ก in QueueItemBaseก);

command.ExecuteNonQuery();

}

catch(Exception e) {

log.Debug(e.Message + ก

ก + e.StackTrace);

}

}

Happy customizing, implementing and modifying! If you want us to do the job give us a call 18665280577! help@albaspectrum.com

About The Author

Boris Makushkin is Lead Software Developer in Alba Spectrum Technologies – USA nationwide Microsoft CRM, Microsoft Great Plains customization company, based in Chicago, Boston, San Francisco, San Diego, Los Angeles, Houston, Dallas, Atlanta, Miami, Montreal, Toronto, Vancouver, Madrid, Moscow, Europe and internationally (www.albaspectrum.com), he is Microsoft CRM SDK, C#, VB.Net, SQL, Oracle, Unix developer. Boris can be reached: 18665280577 or borism@albaspectrum.com.

borism@albaspectrum.com

This article was posted on October 25, 2004

by Boris Makushkin

LowCost Marketing With Postcards

LowCost Marketing With Postcards

by: Bob Leduc

Hereกs a simple way you can generate lots of sales leads …or traffic to your web site. Use postcards. They’re highly effective and very lowcost. Plus, postcards provide the following 6 unique advantages over most other types of advertising.

1. Maximum Exposure for Your Sales Message

Postcards are delivered ‘ready to readก. Even people who usually ignore other advertising will find it hard to avoid looking at your message when itกs on a postcard …especially if you keep it brief.

With other types of advertising you often lose prospects who would have been interested in your offer …but they never saw it.

2. Simple and LowCost

Postcards are simple to produce and very lowcost. You can print 4 x 6 inch postcards on your own computer for less than 2 cents each. Or you can reduce the cost down to about 1 cent each if you print 4 at a time on 8 1/2 x 11 sheets of card stock and cut the sheets into quarters.

Even postcards printed by a commercial printer are not expensive …usually about 4 cents to 8 cents each.

The postage for mailing postcards is low too. In the US you can send postcards by First Class Mail for only 23 cents. This reduced postage rate applies to postcards that are at least 3 1/2 x 5 inches but not over 4 1/4 x 6 inches.

3. Get Immediate Results

Because postcards are simple and easy to use they produce results quickly. Often your postcards can be mailed within a week from the time you decide to use them. You will start getting replies 2 or 3 days later.

4. Gain Control of Your Sales Activity

Postcards put you in control your sales activity. You can avoid getting too many or too few responses during any time period by regulating how many postcards you mail and how often you mail them.

That means you can quickly boost your sales activity anytime it slows down. And you can avoid losing customers you can’t handle immediately because you got flooded with too much activity at one time.

5. No Wasted Advertising Expense

Postcards enable you to spend your entire advertising budget on your best prospects. You don’t have to pay for advertising to a large audience in order to reach a few good prospects.

With a little advance planning you can make sure your postcards only go to prospects likely to be interested in what you offer …and who also have a prior history of acting on offers that interest them.

For example, analyze your customers and make a list of the characteristics they share. Then call several national mailing list brokers and tell them what you are looking for. Youกll be surprised at how specific some mailing lists are today.

6. Can Evaluate Results Quickly

Postcards normally generate 90 percent or more of their total number of replies within 7 to 10 days. This enables you to quickly and accurately evaluate the results of postcard advertising. Youกll know in about a week if you can confidently send more of the same postcards or if you need to make some changes.

Don’t overlook postcards when you want to generate sales leads or web site traffic. They’re highly effective, very lowcost …and they provide these 6 unique advantages you cannot get with most other types of advertising.

Copyright 2004 Bob Leduc

http://BobLeduc.com

About The Author

Bob Leduc spent 20 years helping businesses like yours find new customers and increase sales. He just released a New Edition of his manual, How To Build Your Small Business Fast With Simple Postcards …and launched *BizTips from Bob*, a newsletter to help small businesses grow and prosper. Youกll find his lowcost marketing methods at: http://BobLeduc.com or call: 7026581707 After 10 AM Pacific Time/Las Vegas, NV

This article was posted on September 28, 2004

by Bob Leduc

Microsoft CRM Customization – programming email ac

Microsoft CRM Customization – programming email activity attachment

by: Boris Makushkin

Microsoft CRM is now on the scene and it is increasing its market share, due to Microsoft Business Solutions muscles and marketing strategy. It is tightly integrated with other Microsoft Business Solutions products such as Microsoft Great Plains, Solomon, Navision. Being relatively inexpensive in comparison to competitors, like Siebel, Oracle Microsoft CRM opens you the door for worldwide operations automation. In this small article we would like to give you, software developer, some hints on Microsoft CRM customization.

Todayกs topic is Activity of email type programming you usually deal with these customizations when you improve Microsoft Exchange CRM connector. How do you create email attachment this is the main discussion topic. We’ll use C#.Net.

In Exchange handler/event sink you create Activity of email type in MS CRM and one of the tasks is transfer the attachment(s) from the body of the incoming email to the attachment(s) in the Activity. You can realize it through direct access to Microsoft CRM DB. Let’s see C# code:

1. First we are getting access to the letter via ExOLEDB:

CDO.Message iMessage = new CDO.MessageClass();

CDO.IBodyPart iPrt;

iMessage.DataSource.Open(bstrURLItem, null, ADODB.ConnectModeEnum.adModeRead,

ADODB.RecordCreateOptionsEnum.adFailIfNotExists, ADODB.RecordOpenOptionsEnum.adOpenSource, กก, กก);

2. Next – we come through the attachment list, get their names and save their bodies into temporary catalogue:

for(int i = 1; i ก;

strXml += กActivity 1ก;

strXml += กก + attachmentNumber + กก;

strXml += กก + emailId.ToString(กBก) + กก;

strXml += กก;

// Create the activity attachment

Guid attachmentId = new Guid(activityAttachment.Create(userAuth, strXml));

log.Debug(กCreate Attachemnt ID: ก + attachmentId.ToString(กBก));

UploadFileToDB(attachmentId, filename, filesize);

return attachmentId;

}

catch (System.Web.Services.Protocols.SoapException e) {

log.Debug(กErrorMessage: ก + e.Message + ก ก + e.Detail.OuterXml + ก Source: ก + e.Source);

}

catch (Exception e) {

log.Debug(e.Message + ก

ก + e.StackTrace);

}

return new Guid();

}

5. Main problem, however is attachment body adding to MS CRM database. Main requirement is – attachment must be encoded as BASE64 stream and its length must be specified correctly together with Nine Type and file name of the file it will be knows as an attachment in activity. Let’s look at the C# code:

public void UploadFileToDB(Guid attachmentId, string filename, long filesize) {

string contentType = กapplication/octetstreamก;

try {

Hashtable mimes = LoadMimeDB(Environment.SystemDirectory + ก/Albaspectrum/ContentType.txtก);

if (mimes != null) {

string tmpContentType = GetMimeType(mimes, filename);

if (tmpContentType != null && !tmpContentType.Equals(กก))

contentType = tmpContentType;

}

byte[] memoryData = new byte[filesize];

FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);

BinaryReader reader = new BinaryReader(fs);

reader.Read(memoryData, 0, (int)filesize);

reader.Close();

fs.Close();

OleDbCommand command = conn.CreateCommand();

command.CommandText = กUPDATE ActivityMimeAttachment SET FileSize = (?), MimeType = (?), FileName = (?), Body = (?) WHERE ActivityMimeAttachmentId = (?)ก;

command.Prepare();

command.Parameters.Add(new OleDbParameter(กFileSizeก, filesize));

command.Parameters.Add(new OleDbParameter(กMimeTypeก, contentType));

command.Parameters.Add(new OleDbParameter(กFileNameก, new FileInfo(filename).Name));

command.Parameters.Add(new OleDbParameter(กBodyก, Convert.ToBase64String(memoryData, 0, (int)filesize)));

command.Parameters.Add(new OleDbParameter(กActivityMimeAttachmentIdก, attachmentId));

log.Debug(กPrepare to upload attachemnt ก + attachmentId.ToString(กBก) + ก in ActivityMimeAttachmentก);

command.ExecuteNonQuery();

memoryData = null;

}

catch (Exception e) {

log.Debug(e.Message + ก

ก + e.StackTrace);

}

}

6. File ContectType.txt is matching list of the files extensions and their mimetype in the following format:

asc application/pgpencrypted Armored Encrypted file (PGP)

asd application/astound Autosave file (Word for Windows)

asm PC ASM File

asn application/astound

etc.

Happy customizing, implementing and modifying! If you want us to do the job give us a call 18665280577! help@albaspectrum.com

About The Author

Boris Makushkin is Lead Software Developer in Alba Spectrum Technologies – USA nationwide Microsoft CRM, Microsoft Great Plains customization company, based in Chicago, Boston, San Francisco, San Diego, Los Angeles, Houston, Dallas, Atlanta, Miami, Montreal, Toronto, Vancouver, Moscow and Europe and internationally (www.albaspectrum.com), he is Microsoft CRM SDK, C#, VB.Net, SQL, Oracle, Unix developer.

borism@albaspectrum.com

This article was posted on October 24, 2004

by Boris Makushkin

Microsoft CRM Integration: Siebel Email Attachment

Microsoft CRM Integration: Siebel Email Attachments Import C# and MS Transact SQL example

by: Boris Makushkin

Microsoft CRM – CRM answer from Microsoft Business Solutions has aggressive pricing, going down and making it affordable for small companies. We see cases when Microsoft CRM replaces such traditional CRM systems as Siebel. It is not necessary, that clients decided to replace it themselves – they may be victims of their systems – the example: Great Plains had alliance with Siebel several years ago and we saw multiple clients with Great Plains – Siebel tandem. Now Great Plains integrates with MS CRM.

This article is for programmer, who needs data to be migrated from Siebel or other CRM to MS CRM.

Today’s topic is Siebel emails, stored in the files, import into MS CRM database. Each message exists in the form of separate file in the import directory. We will use custom SQL table, created in MS SQL Server 2000:

if exists (select * from dbo.sysobjects where id = object_id(Nก[dbo].[CrmAttachImporter]ก) and OBJECTPROPERTY(id, NกIsUserTableก) = 1)

drop table [dbo].[CrmAttachImporter]

GO

CREATE TABLE [dbo].[CrmAttachImporter] (

[Id] uniqueidentifier ROWGUIDCOL NOT NULL ,

[CrmActivityGuid] [varchar] (50) NOT NULL ,

[MsgFileName] [varchar] (2000) NOT NULL

) ON [PRIMARY]

GO

Comments to this table – its goal is storing MS CRM activity GUID relationship to file name with email attachment (email message), which needs to be attached to the activity. We will store activity GUID in the field CrmActivityGuid and file name in the import directory of the attachment in the MsgFileName field.

Configuration file for our utility will be the following:

provider=SQLOLEDB;Initial Catalog=Albaspectrum;Data Source=MSSQL1;User Id=sa;Password=sa;

data

CrmAttachImporter

CrmActivityGuid

MsgFileName

Here we described MS SQL Server connection string, the path to messagesfiles in the file system, table name, which stores the relations Activity GUID and file names, table column names, required for import procedure

To control import process we will use free logging library for .NET: log4net. You can get it here: http://logging.apache.org/log4net/

Let’s look at the method of potential attachments catalog scanning:

public void scanFolder() {

log = LogManager.GetLogger(typeof(AttachImporter));

DOMConfigurator.Configure(new FileInfo(กlog.configก));

try {

DirectoryInfo dirInfo = new DirectoryInfo(msgFolder);

FileInfo[] files = dirInfo.GetFiles();

Hashtable emails = new Hashtable();

foreach (FileInfo fileInfo in files) {

log.Debug(กAnalizing file: ก + fileInfo.Name);

Guid activityId = GetActivityIdByFileName(fileInfo.Name);

if (! activityId.ToString().Equals(new Guid().ToString())) {

emails.Add(activityId, fileInfo.DirectoryName + @ก\ก + fileInfo.Name);

Console.WriteLine(กMarked for import: ก + fileInfo.Name);

log.Debug(กMarked for import: ก + fileInfo.Name);

}

else {

Console.WriteLine(กNot found in activity import list: ก + fileInfo.Name);

log.Debug(กNot found in activity import list: ก + fileInfo.Name);

}

}

ProcessMessages(emails);

}

catch (Exception e) {

Console.WriteLine(e.Message + ก

ก + e.StackTrace);

}

}

Central place in this method is checking on the relationship existence in the import table for CRM Activity GUID and file name in the import directory:

private Guid GetActivityIdByFileName(string fileName) {

//create the database connection

OleDbConnection conn = new OleDbConnection(connectionString);

conn.Open();

//create the command object and store the sql query

OleDbCommand command = conn.CreateCommand();

command.CommandText = กSELECT ก + activityGuidColumn + ก, ก + msgFileNameColumn + ก FROM ก + tableName + ก WHERE UPPER(LTRIM(RTRIM(ก + msgFileNameColumn + ก))) = UPPER(LTRIM(RTRIM(?)))ก;

log.Debug(กPreview checking SQL query: ก + command.CommandText);

log.Debug(กUsing file name: ก + fileName);

command.Parameters.Add(new OleDbParameter(msgFileNameColumn, fileName));

//create the datareader object to connect to table

OleDbDataReader reader = command.ExecuteReader();

if (reader.Read()) {

Guid activityGuid = new Guid(reader.GetString(0));

reader.Close();

conn.Close();

return activityGuid;

}

else {

reader.Close();

conn.Close();

return new Guid();

}

}

Importing messages cache is transferred as a parameter to the method, which does attachment import into MS CRM:

private void ProcessMessages(Hashtable emails)

{

try

{

log.Debug(กStart importing processก);

CRMConnector crmConnector = new CRMConnector();

// Connect to CRM DB

crmConnector.SetCrmConfigPath(Environment.SystemDirectory + ก/Albaspectrum/MSCRMGateway.xmlก);

crmConnector.SetCrmContentType(Environment.SystemDirectory + ก/Albaspectrum/ContentType.txtก);

crmConnector.Connect(log);

if (emails != null) {

ICollection keys = emails.Keys;

int attCounter = 0;

foreach (Guid o in keys) {

string attName = (string)(emails[o]);

crmConnector.AddAttachmentToActivity(o, attName, (new FileInfo(attName)).Length, attCounter);

attCounter++;

}

}

crmConnector.Close();

}

catch (Exception ex)

{

log.Debug(ex.Message + ก
ก + ex.StackTrace);

}

}

All the required classes for working with MS CRM Activity are stored in MSCRMGateway library and described in these articles:

http://www.albaspectrum.com/Customizations_Whitepapers/Dexterity_SQL_VBA_Crystal/MSCRMCUstomizationEmailAttachment.htm

http://www.albaspectrum.com/Customizations_Whitepapers/Dexterity_SQL_VBA_Crystal/MSCRMCUstomizationClosedActivity.htm

Happy converting and importing! If you would like us to do the job, give as a call 1630.961.5918 or 1866.528.0577 help@albaspectrum.com

About The Author

Boris Makushkin is Lead Software Developer in Alba Spectrum Technologies – USA nationwide Microsoft CRM, Microsoft Great Plains customization company, serving Chicago, California, Arizona, Colorado, New York, Texas, Georgia, Florida, Canada, Australia, UK, Russia, Europe and internationally ( http://www.albaspectrum.com ), he is Microsoft CRM SDK, Navision, C#, VB.Net, SQL, Oracle, Unix developer.

BorisM@albaspectrum.com

This article was posted on December 23, 2004

by Boris Makushkin

Arm Yourself Against Snoops With Spyware Counterin

Arm Yourself Against Snoops With Spyware Counterintelligence

by: Heather Wallace

Spyware is the cyberequivalent of a peeping Tom. No one would think of sitting by while someone hide in the bushes watching their every move, so why do so many allow spyware snoops to moniter them online? In some cases the answer is simple. They may not even know that they are being watched.

Spyware comes in all shapes and sizes. It can simply be annoying or it can be downright dangerous. The more worrisome varieties of spyware can:

Slow down your system

Crash your PC

Log your keystrokes

Log your email

Log your chat sessions

Steal credit card details

Capture passwords

Screen capture your display

Collect personal data

Collect financial information

What is the Purpose of Spyware?

There are many different parties who may want to collect your personal, financial, or sensitive information and there are several reasons why they might want to have it. Usually spyware users are:

Marketing Companies They gather data from your PC about which sites you visit, which products you purchase, and details about the email that you send.

Family Members Even your own loved ones may be monitoring your activity. Parents can use spyware to keep tabs on the sites that their children frequent and suspicious spouses could easily use spyware to track their mates activity online.

Roommates Roommates are also possible spyware users. For example, when students enter college they must cohabitant with people that they don’t even know. One of those people could easily be an unscrupulous person who is gathering important information with spyware.

Employers Many employers, concerned about employees wasting time online, have installed snoopware on company computers. This software is designed to moniter both online and email activity. Your employer, therefore, could be monitoring you and judging you based not on your work performance, but rather on the content of your email and the sites that you visit while at work.

Crime Organizations Thieves and all sorts of nefarious sorts use spyware everyday to collect credit card details, social security numbers, passwords, etc. They then use this information to steal your identity and, in the process, make a considerable amount of money while ruining your credit and your reputation.

Identity Thieves Spyware is a vital tool in an identiy thefts arsenal. It allows them to gather detailed information that they can then use to masquerade as you.

Is There More Than One Type of Spyware?

Spyware is just a broad term for a variety of different programs. A few of the more common forms of spyware include:

Adware Those annoying popups ads that plaster your screen fall into the category of adware. Adware also refers to any advertiser supported program. In order to display ads that are targeted to your interests your activity is monitored and, based on your habits, you are shown ads that should be of interest to you. Adware also puts a strain on your system resources because it must connect to a remote server in order to communicate your personal information with whomever is monitering you.

Keystroke Loggers This type of spyware logs everything that you type. Whether that is a personal note, a password, or a credit card number. Anything and everything that you type is captured and forwarded to the person watching your activity.

Browser Hijackers This form of spyware will commonly change your home page to a socalled search page that is filled with lessthanuseful payperclick results. This flavor of spyware also logs the URLs that you visit.

Snoopware This variety of spyware can monitor a PC userกs every action. In addition, these programs were specifically designed to go undetected by the person being monitored. Snoopware used to be primarily found only in the workplace, but, as snoopware became more affordable, its usage grew. Employers, suspicious spouses, coworkers, parents, and strangers are just a few of the people that may unleash snoopware on your system.

How Spyware Invades Your System Without Warning

The sad fact is that you have probably installed a very malicious spyware program on your computer without even realizing it. Your system may been infected with spyware if you have ever downloaded:

Filesharing programs

Freeware

Shareware

Music

Games

Screensavers

Video clips

Pictures

Even some programs that can be purchased in stores contain spyware.

Spy(ware Detection) vs. Spy(ware)

It would be virtually impossible to prevent spyware on your own. Even the most hypervigilant defense would most likely let spyware slip through the cracks. The only way to absolutely ensure that your system is protected is to monitor your computer with spyware prevention and removel software.

A firewall is another invaluable resource that should be used in conjunction with a spyware prevention and removal program. The firewall monitors your PCกs Internet connection and shields it from unwanted actions by thirdparties. In doing this it prevents spyware from connecting with remote sites without your permission.

Once spyware infiltrates your system it can be quite a chore to remove. Uninstalling the program that was bundled with the spyware won’t do it. That will only remove the main application from your system, while the spyware application remains. After spyware has entered your computer your best course of action is to install a spyware prevention and removal program. In addition to preventing spyware infection these programs will also remove the spyware that has already infected your system.

About The Author

Heather Wallace is a writer whose work has been published in national, regional, and online publications. Additionally, she has written articles as a newspaper correspondent. Visit http://www.fetchingsites.com/SpywareIntel.html to run a free spyware detection scan on your computer.

Copyright © 2004 Heather Wallace

You have permission to publish this article electronically or in print, free of charge, as long as the you do not edit the material and the authorกs Resource Box is included with the article. A courtesy copy of your publication would be appreciated.

This article was posted on December 15, 2004

by Heather Wallace