How to Remove Add/Remove Programs Entries?

Generally, you would use the Control Panel’s Add/Remove Programs tool or Vista’s Default Programs | Programs and Features page to uninstall programs from your computer. Now and again some of these uninstalls will leave program names behind which, when clicked on, either produce errors or no action. You can remove these invalid entries using the method described here.

Note: To use the method described here you will be editing the registry. Editing the registry is tricky in that if you do it wrong you can cause problems with your computer up to and including rendering it inopperable. So, start by first making a restore point using the Windows System Restore utility. Close all open programs and then access the utility through the Start | Programs | Accessories | System Tools | System Restore menu sequence. Pick the Create a restore point radio button and then follow the instructions in the wizard. You will be making others backups as we go along as well.

Note: The procedure described here only removes the references to an invalid entry in the Add/Remove Programs tool; it does not remove or uninstall a program. If a prior uninstall left residual materials on your hard disk in program directories or user data directories and/or other registry entries you will have to clean these up manually. Because each program is different in how it installs, instructions for doing that are beyond the scope of this document.

OK, caveats given, let’s start:

Start the Registry Editor (Start | Run and then type “regedit” [no quotes] into the dialog box — in Vista just type “regedit” [no quotes] into the Start menu search box)

Navigate to this key value in the left pane:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall
Right click on the Uninstall entry. Select the “Export” option from the menu. Give the exported .REG file a name you can remember and store it in a location you can remember. Doing this makes a backup you can recover from if you make an editing error in the steps below.

Locate the specific key you wish to delete. It will likely have the name of the program but, in case not, scroll down each entry and look at the value for DisplayName. The key you want is the key that contains the same display name as you are trying to remove from the Add/Remove Programs menu.
If you want to be extra safe, right click on this key and again select Export and save the .REG file.

Once you have located and backed up the key containing the DisplayName you wish to delete from the Add/Remove Programs menu, delete that key from the registry. Delete only that key; do not delete the entire Uninstall entry or any other entries.
Close the Registry Editor (changes made to the registry via the Registry Editor take immediate effect so you don’t have to save anything before closing the editor).
Open the Add/Remove Programs utility from the Control Panel (in Vista use Vista’s Default Programs | Programs and Features page) and verify that the invalid entry is gone and that the other entries are still there.

That should do the job. If you made an error along the way and need to recover either the specific key you deleted or the entire Uninstall key then double click on either the key’s .REG file or the Uninstall key’s .REG file. When you do this you will cause the Registry Editor to restore the values in that key to what they were before you attempted your edit. Should the worst happen and you change something in the registry that you should not have then you should be able to use the System Restore Utility to recover the system to the restore point you created and then start over again.

What is a Cookie?

The full cookie specification (RFC 2965) can be found at http://tools.ietf.org/html/rfc2965 if you are interested in studying the subject in detail. To simplify, cookies are small bits of information written to your hard disk by a site you visit. The site that writes the information is basically the only site that can retrieve it (some argue that it is possible to “fake” the request and collect information from cookies saved by other sites; they are possibly correct, but this seems to be rare if done at all).

The name “cookie” comes from the UNIX magic cookie which is a name given to packets of information passed between programs. That name is derived from the Chinese fortune cookie where you have information hidden inside a packet.

The purpose of a cookie is twofold:

Save information about you to make it easier for you to enter the site in the future.
Track your actions (for a variety of reasons that might benefit you or the site manager).
As one simple example, consider a newspaper site with a registration requirement (paid or free, it does not matter). Your logon information might be saved in a cookie so that when you return to the site it can query the cookie and save you the trouble of logging in. Further, if you have specific information requirements these can be coded into a cookie and the site can then automatically present you with stories on the specific topics of interest without bothering to ask you again to enter them on future visits.

How are Cookies Stored?

Cookies are stored in different ways with different browsers and operating systems. On a computer running Windows and a Netscape browser you will find them in a file named COOKIES.TXT in the browser directory. Firefox places an SQLite database of cookies into the browser’s profile folder. A Windows user running Internet Explorer will find them as separate files in the WINDOWSCOOKIES directory. In UNIX they are in a single file in your Netscape directory under the name cookies. Finally, on a Macintosh the file is named MagicCookie and is in the Netscape preferences folder. If you look at a cookie you will see a single line that looks something like:

.infoseek.com TRUE/FALSE 869315463 InfoseekUserId 9CC70E7E5772038797334985D8974560

.netscape.com TRUE/FALSE 946713599 NETSCAPE_ID c65ffb1e,c4750133

The start of the cookie generally has the domain name authorized to access that cookie. The second to last column is the name of the cookie and the last column is the cookie itself. The other information is control information that can define the length of time the cookie is valid and such things as if a secure server connection is necessary before the cookie will be sent.

The specification allows up to 300 total cookies with each being up to 4KB long. There can be up to 20 cookies per server or domain. When these limits are exceeded older cookies (particularly those that have expired) are erased. If there are no expired cookies, then older cookies (expired or not) may be erased.

Cookie Security

Three major concerns are typically raised:

“Someone” is writing to your hard drive without your knowing about it.
Cookies can be used to “steal” valuable information about you.
Cookies can be used to track you (and thus invade your privacy).
While each of these concerns has some validity (depending largely on how you view personal security and privacy) there is little real concern if you take what one might describe as standard precautions.

In the first instance, many programs write to your hard drive without your knowing about it. There are temporary files, cache files, and any number of related files routinely written to your hard disk during any computing session. If you are worried about it, modern browsers have a “notify” option relating to cookies. Check it and the browser will alert you whenever a cookie is supposed to be written to your hard disk. Because of privacy concerns raised by some people expect all future browsers to also have an option that tells them you never want a cookie recorded (or some alternative where you only accept cookies from defined sites or during a specific browser session). Of course, if you don’t record a cookie, if you revisit the site you will have to go through the registration process all over again. This may or may not be convenient for you.

The second instance is usually described in near-hysterical terms that describe how cookies are going to search your hard drive and send all sorts of vital information to some site or another. Bottom line: This is false. The only information a cookie can send to any site is information you have already provided, including any information you sent in a form or locations you have visited on the site in question (or locations you were directly referred to by links from that site). The cookie specification allows no access outside of the cookie file itself. And, if a site wanted to track your activity it could do so on that site; it would not require cookie technology. Cookies just reduce storage space on the server side since the site does not have to allocate storage space for every possible user; each user allocates a little space for the information on their system in the form of a cookie.

The third (track you) has minor potential for problems under some very unique circumstances. Here is a worst case scenario (that would be difficult to implement). Consider a site which stores advertising banners that many other sites draw from. This same site runs contests for other sites. If that site wants to it can:

Each time you hit a page with one of those banners on it the storage site checks for cookies it might have sent you in the past and places another. It also records the site you are on plus any info the browser might send (including your current IP address) into its database (at this point all the site knows is the ISP you are logging in from).
If you now enter one of that site’s contests all the information you provide as part of the contest rules is also stored in the database. The ad banner storage site now knows who you are, what sites you have visited, and what some of your interests are.
Now take your laptop on a trip. If you are using a national ISP your IP address will likely change because national ISPs generally assign the address dynamically when you log in and the address is based on location. So, when you now hit another advertising banner the ad site suspects you are traveling. (In the extreme, knowing personal information and that you are away from home could be used in many ways, but in practice such coordination would be hardly worth the effort. There are many easier ways of determining if you are home or not.)
Another example of cookie use can be seen on many shopping sites (e.g., Amazon.com for one). When you go to Amazon.com as a prior customer the chances are that Amazon.com will put up a page with your name on it. They remember you via cookies set on your prior visit(s).

As with any other information and technology, cookies have their positive and negative sides. If you are careful in what you provide to any site there seems to be minor danger in allowing cookies to be active on your computer. Cookies or not, however, you need to exercise caution with important information (e.g., credit card numbers). Consider carefully to whom you provide this information in any form. And, be aware that more information that you might care to have collected can be collected on you over time via cookies.

Cisco 2800 ISR configuration for SIP voice with NAT and Firewall

had the enjoyable opportunity over the last few weeks to jump in and do a basic Cisco voice install. It was about 110 phones, with the Cisco Unified Communications Manager Business Edition. This is a single box that includes Call Manager 6.1.3, and Unity Connection 2.1. It had to be done fast, and it had to be done right, so I stuck to mostly tried and true configurations.

Since this was a price sensitive design, we used the 2800 router to its maximum potential. The 2800 is an amazingly flexible piece of equipment; it can be configured to do large variety of things. Sometimes known as the Integrated Services Router, or ISR, it can be set up as a router, firewall, VPN, Voice Gateway, SIP session border controller, transoder, conference bridge, and survivable remote gateway, all at the same time, on the same box!

The call manager and unity connection install was straightforward, like punching out license plates. Set up media, device pools, partitions, calling search spaces, translation patterns, gateways, route filters, route patterns, etc. Scan then batch add the phones, set up voicemail and autoattendant call handlers, create expections, deal with the special people, and that’s it. Enough said about that.

The Cisco 2800 Integrated Services Router is used in this example to terminate a Multilink PPP bundle of four Internet T1’s, act as a firewall, provide media services to the Cisco call manager, act as an MGCP controlled analog gateway, and use Cisco Survivable Remote Site Telephony (SRST) to be the backup call processor to the main Cisco Call Manager.

SIP is ok with Network Address Translation as long as the firewall is capable of doing deep packet inspection and NAT’s all references to IP addresses. When I tried to NAT the inside interface of the firewall…it did not work so well. The remote SIP service provider was seeing private IP addresses in the SIP text, which does not make for good two way communications.

The Quality of Service setup on this example is fairly straightforward. Outbound is the standard Cisco MQS low-latency queuing setup, with a priority queue for voice and class based weighted fair queuing for the rest. Even though the service provider has said they prioritize inbound voice, I still set up inbound policing. Non-voice is limited to 4 Mbps, and anything greater than that will be dropped. Voice can use all of the bandwidth, so essentially there is 2 Mbps reserved for inbound voice. This is based on a calculation of 80 kbps for one G.711 call, so 2000 kbps gives us 25 concurrent voice calls, which should be plenty for 110 phones.

Digium Switchvox is surging ahead

The Asterisk open source phone system has always been a favorite of mine. I used it to help me out of a SIP jam a few years back, and for many years I have wanted to be able to put together a good system for customers using Asterisk, but have not been able to create something sufficiently compelling.

Although I primarily work with Cisco Unified Communications, and think it is the best overall UC system in the market, I had become frustrated when trying to come up with designs for less than 100 phones that were competitive from a standpoint of features and price.

For example, there was one company just down the street from us that we would talk to every year, trying to come up with new and better designs at a better price. They were consistently not interested.

Finally, a few months back we made the strategic decision to start selling a phone system optimized for less than 200 users, which offers a huge feature set at a very attractive price. After going through all the training, certifications, putting the distributor relationships in place, tuning up our demo system, etc., we went back to visit this recalcitrant customer.

It had been about a year since we last talked. I pulled out the old design, updated it for the new product, and we priced it out. It looked good. As we walked in the door, I looked over to the reception area to reacquaint myself with the type of phone system they currently had. I pointed it out to the sales rep that was with me, then I did a double-take.

Ironically, it was a Polycom phone, and furthermore on the display it said Digium Switchvox. All of a sudden we realized we were not there on a sales call; we were there to get told to take a hike.

See, there are only a few decent choices these days when looking for a new phone system. Setting a baseline that it has to be an IP based Unified Communications system, and has to be from a manufacturer who will provide the support a customer requires, leads to a few options. Ranked by typical price of a system, high to low, the choices are:

1. Avaya (formerly Lucent, formerly ATT). Good company, decent product. There are more Avaya Definity PBX’s installed than you can shake a stick at. Low end IP Office has a tough time making a go of it, but the higher end product set of G series media gateway and S8000 series servers are good products. They can be difficult to manage, and Avaya IP phones are not SIP based, but overall a strong offering.

2. Nortel. Huge TDM market presence. There are a lot of Norstar and Option 11’s installed out there. The BCM product is ok, and the communication manager based products are good. It is just a big risk to decide on a company’s products when that company is currently in bankruptcy.

3. Cisco. Although I am admittedly biased in this regard (see my company link to the right), Cisco is an excellent choice for multi-site and more than 150 handsets. Anything less and the pricing starts to creep up or the feature set slims down. As Cisco adds features, additional appliances are required; which is fine for larger installations but not for smaller ones.

4. Mitel. Has good products, but since the acquisition of Intertel they seem to have a number of overlapping product sets. We have seen customers buy the lower end products first, then have to replace them later as they grow in size and have different needs.

5. Shoretel. Good at the lower end of phone counts. Many people like their features and ease of use. Constant Windows server updates to the base operating system can be frustrating.

6. Asterisk, which is the most widespread open-source PBX in existence. A good Asterisk install has a better combination of reliability, features, and price than anything else out there. The problem with Asterisk is that the best management is done at the command line by someone very familiar with it, and sometimes it is hard for businesses to buy a phone system from a consultant.

There are also other players that are either coming or going:

1. Microsoft. Making a good entry into the market with OCS 2007. I have a hard time understanding the current marketing campaign of continuing to pay for the legacy PBX and adding Microsoft OCS as an additional cost. I think the system would work better with a full IP conversion using SIP phones.

2. Siemens, Alcatel, 3com, Altigen, and various hosted systems. These are not serious players at this point for business communications systems for more than a few phones.

One that does not fit either category is Digium. This is the company founded by the inventor of Asterisk. Most of their business was creating interface cards for Asterisk installations. The Switchvox product is an appliance based on Digium’s business edition Asterisk, and is only managed by a GUI. The GUI is comprehensive and the product feature rich. I expect Digium to grow rapidly with the Switchvox product line.

It works with any SIP based phone, and will provision Polycom and Snom SIP phones centrally. It has an inexpensive price, and in one box has all the features one could want, including:

ACD and IVR
Call recording
Presence and desktop control of phone.
Central management and provisioning of handsets.
PRI, analog, and SIP trunk connectivity.
Conferencing, whisper, handset paging.
Multiple codec’s.
Unified communications.
SIP softphone support.
XML based call control decisions and database interactions.
Digium just announced Switchvox SMB version 4, which adds a chat server, video calls, fax server, windows client, and wideband audio support.

I have been in the Unified Communications business now for 10 years. Furthermore, that entire time has been on the front lines of the business, working with customers every day to design successful systems that they could cost-justify and purchase, then putting the systems in place and supporting them. Almost all of it has been with Cisco IP phone systems.

Because of all that experience, when I dug into the details of the Digium Switchvox phone system, I was very excited. I knew the years of continuous improvements to Asterisk provided a stable foundation for the platform. After testing it out, I found a few flaws in version 3.5, all of which had workarounds, and all of which have been addressed in the 4.0 version product upgrades. The best feature, though, is the amazing GUI. It is comprehensive, easy-to-use, and visually slick.

Going forward, we are going to be talking about the Digium Switchvox Unified Communications system to our customers when it is the right mix of features and price. I expect that to be definitely for

Cisco Security Monitoring, Analysis, and Response System (MARS)

While MARS may seem similar to CW-SIMS, it is quite different. MARS actually understands the configuration and topology of your network. You can think of MARS as a “virtual security admin” for your network — working while you sleep.

MARS uses NetFlow data from Cisco routers to have a real-time understanding of network traffic. It knows what is considered normal and what is not; this is called behavioral analysis. With behavioral analysis, MARS can stop abnormal network traffic. MARS has over 150 audit compliance templates ,and will make recommendations on how to remediate threats to your network.

MARS is actually an appliance that you install on your network. This appliance comes in a variety of sizes and license levels based on the size of your network. Cisco Security MARS and Cisco Security Manager are part of the Cisco Security Management Suite.