<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Cache &#8211; Henry Poon&#039;s Blog</title>
	<atom:link href="https://blog.henrypoon.com/blog/tag/cache/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.henrypoon.com</link>
	<description></description>
	<lastBuildDate>Wed, 05 Oct 2022 02:48:28 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
<site xmlns="com-wordpress:feed-additions:1">83044199</site>	<item>
		<title>Proof of the Farthest-in-Future Optimal Caching Algorithm</title>
		<link>https://blog.henrypoon.com/blog/2014/02/02/proof-of-the-farthest-in-future-optimal-caching-algorithm/</link>
					<comments>https://blog.henrypoon.com/blog/2014/02/02/proof-of-the-farthest-in-future-optimal-caching-algorithm/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Sun, 02 Feb 2014 23:19:13 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[All That]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Cache replacement policies]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Comment]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Computer architecture]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Contents]]></category>
		<category><![CDATA[CPU cache]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Digital technology]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[farthest-first]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[greedy algorithms]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[IOS]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[optimal caching]]></category>
		<category><![CDATA[Outside]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[tuna]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/proof-of-the-farthest-in-future-optimal-caching-algorithm</guid>

					<description><![CDATA[This topic came up in one of my lectures and I found it a little challenging to understand the proof so I thought I&#8217;d write it down as best as I could explain it so that I could understand it better and possibly help other people understand it better. &#160;Feel free to comment/ask questions/correct me, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>This topic came up in one of my lectures and I found it a little challenging to understand the proof so I thought I&#8217;d write it down as best as I could explain it so that I could understand it better and possibly help other people understand it better. &nbsp;Feel free to comment/ask questions/correct me, etc.</p>
<p>In a computer, there are various methods of storing information. &nbsp;Information can be stored in the processor cache, RAM, hard disk, etc. &nbsp;It can be faster to request information from a storage medium that is smaller. &nbsp;However, this smaller storage medium cannot fit all the possible information that can be requested. &nbsp;So the idea is to insert a portion of the data into the faster, smaller medium (the <strong>cache</strong>) and the rest into the slower, larger medium (<strong>main memory)</strong>.</p>
<p>If a request is made and the data is not available in the faster, smaller medium first, then the data will be read from the slower, larger medium &#8211; this is what is known as a <strong>cache miss</strong>.</p>
<p>Given that all the data cannot possibly live in the cache, there must be a way to minimize the amount of times that the data must be read from the main memory.</p>
<h1>Optimal Caching &#8211; Farthest-in-Future</h1>
<h2>The Algorithm</h2>
<p>The idea is that there is an algorithm that minimizes the amount of cache misses that occur for a set of requests. &nbsp;The <em>Farthest-in-Future Algorithm&nbsp;</em>evicts the item in the cache that is not requested until the farthest in the future. &nbsp;For example, given the following cache with items &#8220;a&#8221; through &#8220;f&#8221;.</p>
<table>
<tbody>
<tr>
<td>Cache Items</td>
<td>a b c d e f</td>
</tr>
<tr>
<td>Future Queries</td>
<td>g a b c e d a b b f</td>
</tr>
</tbody>
</table>
<p><span style="line-height:1.5em;">It is clear that &#8220;g&#8221; does not exist in the set of cache items and so when &#8220;g&#8221; is requested, a cache miss will result. An item will be evicted because &#8220;g&#8221; is not in the cache. &nbsp;According to the </span><em style="line-height:1.5em;">Farthest-in-Future Algorithm</em><span style="line-height:1.5em;">, element &#8220;f&#8221; will be evicted since it is the one that will be used furthest in the future.</span></p>
<h2>Definitions</h2>
<p><strong>Cache Miss</strong> &#8211; Occurs when it is necessary to bring in an item from the main memory into the cache</p>
<p><strong>Schedule</strong>&nbsp;&#8211; A list that contains, for each, request, which item is brought into the cache, and which item is evicted</p>
<p><strong>Reduced Schedule</strong> &#8211; a schedule that only brings in an item when there is a request for that item &#8211; so a non-reduced schedule would bring an item into the cache outside of a request for that item</p>
<h2>Theorem</h2>
<p>To be shown:</p>
<blockquote><p><em>Farthest-in-Future</em> is the optimal algorithm that minimizes the number of cache misses.</p></blockquote>
<p>To prove this, let&#8217;s say there is a schedule SFF&nbsp;that follows the&nbsp;<em>Farthest-in-Future Algorithm</em>&nbsp;and that there is a schedule optimal S<sup><em></sup>&nbsp;that has a minimum number of cache misses. It can be shown that it is possible to transform&nbsp;S<sup></em></sup>&nbsp;into SFF&nbsp;by performing a series of evictions without increasing the number of cache misses. &nbsp;Since&nbsp;S<sup>*</sup>&nbsp;is already optimal, and the number of cache misses did not increase, then SFF&nbsp;must be optimal.</p>
<p>To perform one transformation, the statement below can be used. &nbsp;Right now, it isn&#8217;t all that clear why this is necessary, but it should become clearer further on.</p>
<blockquote><p>Let S&nbsp;be a reduced schedule that is the same as SFF&nbsp;for the first j requests, then there is a reduced schedule S&#8217;&nbsp;that is the same as SFF&nbsp;for the first j+1 requests, and incurs no more misses than S</p></blockquote>
<h2>Proof</h2>
<p>Let&#8217;s say the cache at the start looks like this. &nbsp;S and SFF&nbsp;have the exact same contents (this is what was defined in the previous section).</p>
<table>
<tbody>
<tr>
<td>S</td>
<td>a b c d</td>
</tr>
<tr>
<td>SFF</td>
<td>a b c d</td>
</tr>
</tbody>
</table>
<p><span style="line-height:1.5em;">Given a schedule S, it can be shown that any request can be made, and the resulting schedule would be equal to the ideal algorithm and does not increase the number of cache misses. &nbsp;Essentially, we want S = S&#8217; = SFF&nbsp;after a request is made and that the number of cache misses have not increased. &nbsp;If this can be shown for all different scenarios that items are requested, then&nbsp;</span><em style="line-height:1.5em;">Farthest-in-Future</em><span style="line-height:1.5em;"> is the ideal algorithm.</span></p>
<h3>Case 1: Item Is Already in the Cache</h3>
<p>Now let&#8217;s say the next item to be requested is item &#8220;d&#8221;. &nbsp;It is clear that this item exists in both caches and no evictions are necessary. &nbsp;Since no evictions are necessary, SFF&nbsp;does not change. &nbsp;It was specified in a prior section that there is a schedule S&#8217; that equals SFF, which incurs no more misses than S.</p>
<table>
<tbody>
<tr>
<td>SFF</td>
<td>a b c d</td>
<td>Read&nbsp;d</td>
</tr>
<tr>
<td>S</td>
<td>a b c d</td>
<td>Read&nbsp;d</td>
</tr>
<tr>
<td>S&#8217;</td>
<td>a b c d</td>
<td>Read&nbsp;d</td>
</tr>
</tbody>
</table>
<p>Here, S = S&#8217; because no changes had to be made to the cache and there were no cache misses. &nbsp;After the request for item &#8220;d&#8221;, S = S&#8217;, each with zero cache misses, which is a valid outcome.</p>
<h3>Case 2: Item Is Not in the Cache, S and SFF&nbsp;Evict the Same Item</h3>
<p>Let&#8217;s say the next item to be requested is item &#8220;e&#8221;. &nbsp;Neither cache has this item, so an eviction will have to be made. &nbsp;Let&#8217;s also say SFF&nbsp;and S both choose to evict item &#8220;a&#8221; to make room for &#8220;e&#8221;. &nbsp;It was specified in a prior section that there is a schedule S&#8217; that equals SFF, which incurs no more misses than S.</p>
<table>
<tbody>
<tr>
<td>SFF</td>
<td>b c d e</td>
<td>Evict a; Read e</td>
</tr>
<tr>
<td>S</td>
<td>b c d e</td>
<td>Evict a; Read e</td>
</tr>
<tr>
<td>S&#8217;</td>
<td>b c d e</td>
<td>Evict a; Read e</td>
</tr>
</tbody>
</table>
<p>Here S = S&#8217; because S and SFF&nbsp;both evicted the same item. &nbsp;Both S and S&#8217; each have one cache miss (no increase relative to one another), which is a valid outcome.</p>
<h3>Case 3: Item Is Not in the Cache, S and SFF&nbsp;Each Evict A Different Item</h3>
<p>This is where the proof can become more confusing (as if it isn&#8217;t already). &nbsp;Let&#8217;s say the next item to be requested is &#8220;e&#8221;. &nbsp;Let&#8217;s also say that the ideal algorithm, SFF, evicts &#8220;a&#8221; and S evicts &#8220;b&#8221;.&nbsp;It was specified in a prior section that there is a schedule S&#8217; that equals SFF, which incurs no more misses than S. This means that in order to get S&#8217; = SFF, S&#8217; should evict &#8220;a&#8221; in order to match with SFF.</p>
<table>
<tbody>
<tr>
<td>SFF</td>
<td>b c d e</td>
<td>Evict a; Insert&nbsp;e</td>
</tr>
<tr>
<td>S</td>
<td>a c d e</td>
<td>Evict b; Insert&nbsp;e</td>
</tr>
<tr>
<td>S&#8217;</td>
<td>b c d e</td>
<td>Evict a; Insert&nbsp;e</td>
</tr>
</tbody>
</table>
<p>Here, S does not agree with&nbsp;S&#8217; = SFF. &nbsp;Essentially, these two schedules behave the same, so long as future requests do not request items &#8220;a&#8221; or &#8220;b&#8221;. &nbsp;This shows that there is a schedule S&#8217; that equals SFF, but it is not known whether or not S&#8217; has no more cache misses than S, since &#8220;a&#8221; or &#8220;b&#8221; can be requested in the future, which can determine whether S or S&#8217; has more cache misses. &nbsp;From this point onward, S and S&#8217; behave the same until one of the following happens:</p>
<h4>Case 3a: Item Is in SFF, But Not S; S Evicts &#8220;a&#8221;</h4>
<p>Let&#8217;s say eventually item &#8220;b&#8221; gets requested. &nbsp;In this case, S&#8217; and SFF do not need to change. &nbsp;All S has to do is evict &#8220;a&#8221; to make room for &#8220;b&#8221;. &nbsp;In this case, S has two total cache misses (from request &#8220;e&#8221; and &#8220;b&#8221;), while SFF and S&#8217; each have only one cache miss, thus fulfilling the cache miss requirement.</p>
<table>
<tbody>
<tr>
<td>SFF</td>
<td>b c d e</td>
<td>Insert&nbsp;b</td>
</tr>
<tr>
<td>S</td>
<td>b c d e</td>
<td>Evict a; Insert&nbsp;b</td>
</tr>
<tr>
<td>S&#8217;</td>
<td>b c d e</td>
<td>Insert&nbsp;b</td>
</tr>
</tbody>
</table>
<h4>Case 3b: Item Is Neither in SFF Nor S</h4>
<p>Let&#8217;s say eventually item &#8220;f&#8221; gets requested. &nbsp;S&#8217;, SFF, and S all need to make an eviction. S&#8217; and SFF can evict &#8220;b&#8221; to make room for &#8220;f&#8221;, and S can evict &#8220;a&#8221; to make room for &#8220;f&#8221;. &nbsp;In this case, each schedule as two cache misses, thus fulfilling the cache miss requirement.</p>
<table>
<tbody>
<tr>
<td>SFF</td>
<td>c d e f</td>
<td>Evict b; Insert&nbsp;f</td>
</tr>
<tr>
<td>S</td>
<td>c d e f</td>
<td>Evict a; Insert&nbsp;f</td>
</tr>
<tr>
<td>S&#8217;</td>
<td>c d e f</td>
<td>Evict b; Insert&nbsp;f</td>
</tr>
</tbody>
</table>
<h4>Case 3c: Item Is in SFF, But Not S; S Evicts Item Not Equal to &#8220;a&#8221;</h4>
<p>Let&#8217;s say eventually item &#8220;b&#8221; gets requested and S evicts an item that isn&#8217;t &#8220;a&#8221;, say &#8220;c&#8221;. &nbsp;Now, SFF and S&#8217; both already have &#8220;b&#8221; in the cache. &nbsp;In order to synchronize S and S&#8217; to make them comparable to see how many cache misses each have, S&#8217; and SFF will evict &#8220;c&#8221; to make room for &#8220;a&#8221;.</p>
<table>
<tbody>
<tr>
<td>SFF</td>
<td>a b d e</td>
<td>Evict c; Insert a</td>
</tr>
<tr>
<td>S</td>
<td>a b d e</td>
<td>Evict c; Insert&nbsp;b</td>
</tr>
<tr>
<td>S&#8217;</td>
<td>a b d e</td>
<td>Evict c; Insert&nbsp;a</td>
</tr>
</tbody>
</table>
<p>Since &#8220;a&#8221; is being brought into the cache without a request for &#8220;a&#8221;, this makes S&#8217; and SFF no longer a reduced schedule. &nbsp;However, the proof calls for S&#8217; and SFF being a reduced schedule. &nbsp;Fortunately, it is possible to transform an unreduced schedule into a reduced one. &nbsp;In this case, each schedule has two cache misses, thus fulfilling the cache miss requirement.</p>
<h4>Case 3d: Item Is Not in SFF, But in S</h4>
<p>The only item that is in S and not SFF is item &#8220;a&#8221;. &nbsp;SFF had evicted it initially at the beginning of Case 3. &nbsp;Since SFF had evicted it, it must have been the item that would be requested furthest into the future. &nbsp;Therefore, it is not possible for item &#8220;a&#8221; to be requested before other items.</p>
<p>&nbsp;</p>
<p>After going through all possible eviction decisions that the schedules can do, it was shown that for each scenario, there was indeed a schedule S&#8217; = SFF, where the cache misses incurred in S&#8217; no more than S.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2014/02/02/proof-of-the-farthest-in-future-optimal-caching-algorithm/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1799</post-id>	</item>
		<item>
		<title>Disappearing Firefox Icons</title>
		<link>https://blog.henrypoon.com/blog/2011/06/20/disappearing-firefox-icons/</link>
					<comments>https://blog.henrypoon.com/blog/2011/06/20/disappearing-firefox-icons/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Mon, 20 Jun 2011 15:51:37 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[9]]></category>
		<category><![CDATA[APT]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Comment]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox version history]]></category>
		<category><![CDATA[Free software]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Search]]></category>
		<category><![CDATA[Icon]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Laptop]]></category>
		<category><![CDATA[Link]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Page]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Vol]]></category>
		<category><![CDATA[Web browsers]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows 7]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/disappearing-firefox-icons</guid>

					<description><![CDATA[Here&#8217;s a quick post about resolving an issue about the Firefox icon disappearing and showing a generic Windows icon. It came up while I set up my laptop, A quick Google search gave me a solution. It involves rebuilding the Windows 7 Icon Cache. Link: http://www.heerengandhi.com/2009/07/29/firefox-icon-went-missing-in-windows-7-heres-a-fix/comment-page-1/]]></description>
										<content:encoded><![CDATA[<p>Here&#8217;s a quick post about resolving an issue about the Firefox icon disappearing and showing a generic Windows icon.  It came up while I set up my laptop, A quick Google search gave me a solution.  It involves rebuilding the Windows 7 Icon Cache.</p>
<p>Link: <a href="http://www.heerengandhi.com/2009/07/29/firefox-icon-went-missing-in-windows-7-heres-a-fix/comment-page-1/" target="_blank" rel="noopener noreferrer">http://www.heerengandhi.com/2009/07/29/firefox-icon-went-missing-in-windows-7-heres-a-fix/comment-page-1/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2011/06/20/disappearing-firefox-icons/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1075</post-id>	</item>
		<item>
		<title>How to manually uninstall the 2007 Office system if you cannot uninstall it by using the &#8220;Add or Remove Programs&#8221; feature</title>
		<link>https://blog.henrypoon.com/blog/2009/12/03/how-to-manually-uninstall-the-2007-office-system-if-you-cannot-uninstall-it-by-using-the-add-or-remove-programs-feature/</link>
					<comments>https://blog.henrypoon.com/blog/2009/12/03/how-to-manually-uninstall-the-2007-office-system-if-you-cannot-uninstall-it-by-using-the-add-or-remove-programs-feature/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Thu, 03 Dec 2009 04:00:00 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[.exe]]></category>
		<category><![CDATA[9]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[Click]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Control Panel]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Dia]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Drive]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Features new to Windows XP]]></category>
		<category><![CDATA[File Explorer]]></category>
		<category><![CDATA[Find]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Icon]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[Lie]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Office]]></category>
		<category><![CDATA[Microsoft Windows]]></category>
		<category><![CDATA[Net]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Operating systems]]></category>
		<category><![CDATA[PATH]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[Run]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[Struct]]></category>
		<category><![CDATA[System software]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[User Account Control]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[Windows Installer]]></category>
		<category><![CDATA[Windows key]]></category>
		<category><![CDATA[Windows Vista]]></category>
		<category><![CDATA[Windows XP]]></category>
		<category><![CDATA[WoW64]]></category>
		<category><![CDATA[X86]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/how-to-manually-uninstall-the-2007-office-system-if-you-cannot-uninstall-it-by-using-the-add-or-remove-programs-feature</guid>

					<description><![CDATA[This article describes how to uninstall the existing 2007 Microsoft Office system if you cannot uninstall it by using the Add or Remove Programs feature (or Programs and Features in Windows Vista) in Control Panel. We recommend that you verify that you cannot uninstall by using Add or Remove Programs first. UPDATE: This set of [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">This article describes how to uninstall the existing 2007 Microsoft Office system if you cannot uninstall it by using the <strong>Add or Remove Programs</strong> feature (or <strong>Programs and Features</strong> in Windows Vista) in Control Panel. We recommend that you verify that you cannot uninstall by using <strong>Add or Remove Programs</strong> first.</p>



<p class="wp-block-paragraph">UPDATE: This set of instructions works for the Office 2010 Technical Preview as well.</p>



<p class="wp-block-paragraph"><strong>Based on: <a rel="noreferrer noopener" href="https://answers.microsoft.com/en-us/msoffice/forum/all/trying-to-install-office-2010-but-getting-error/4a5e022f-13f1-42bb-ad66-f6dccfd44d40" target="_blank">https://answers.microsoft.com/en-us/msoffice/forum/all/trying-to-install-office-2010-but-getting-error/4a5e022f-13f1-42bb-ad66-f6dccfd44d4</a></strong><a rel="noreferrer noopener" href="https://answers.microsoft.com/en-us/msoffice/forum/all/trying-to-install-office-2010-but-getting-error/4a5e022f-13f1-42bb-ad66-f6dccfd44d40" target="_blank">0</a></p>



<p class="wp-block-paragraph">To automatically uninstall the 2007 Microsoft Office suite, follow the steps in the following Microsoft Knowledge Base article: <a rel="noreferrer noopener" href="http://support.microsoft.com/kb/971179/" target="_blank">http://support.microsoft.com/kb/971179/</a></p>



<p class="wp-block-paragraph">How do I uninstall the 2007 Office suites if I cannot uninstall it by using the “Add or Remove Programs” feature?</p>



<p class="wp-block-paragraph">The steps provided in the &#8216;More Information&#8217; section of this article provide the details of the removal performed by the solution in 971179.</p>



<p class="wp-block-paragraph">You may find it easier to follow the steps if you print this article first.</p>



<p class="wp-block-paragraph"><strong>First, verify that you cannot uninstall the 2007 Microsoft Office system by using Add or Remove Programs (or Programs and Features)</strong></p>



<p class="wp-block-paragraph">To verify that you cannot uninstall the 2007 Microsoft Office system by using <strong>Add or Remove Programs</strong> (or <strong>Programs and Features</strong> in Windows Vista), follow these steps.</p>



<p class="wp-block-paragraph">For Windows XP or Windows Server 2003:</p>



<ol class="wp-block-list"><li>Click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type control appwiz.cpl in the <strong class="uiterm">Open</strong> box, and then press ENTER.</li><li>Click to select the 2007 Office system product from the application list, and then click <strong class="uiterm">Remove</strong>.</li></ol>



<p class="wp-block-paragraph">For Windows Vista:</p>



<ol class="wp-block-list"><li>Click <strong class="uiterm">Start</strong>, type prgrams and features in the <strong class="uiterm">Search</strong> box, and then press ENTER.</li><li>Click to select the product to be uninstalled from the listing of installed products, and then click <strong class="uiterm">Uninstall/Change</strong> from the bar that displays the available tasks.</li></ol>



<p class="wp-block-paragraph">If you were able to uninstall the 2007 Microsoft Office system by using <strong class="uiterm">Add or Remove Programs</strong>, you are finished. If you were unable to uninstall the 2007 Microsoft Office system, you may have issues with the <strong class="uiterm">Add or Remove Programs</strong> dialog box, or some 2007 Microsoft Office components may not be uninstalled. In these cases, you may be unable to reinstall the 2007 Microsoft Office system. Go to the next section to uninstall the 2007 Microsoft Office system by using an alternative method.<br><strong><br>If Add or Remove Programs does not uninstall the 2007 Microsoft Office system, use this alternative method to uninstall</strong></p>



<p class="wp-block-paragraph">Use this method only if the <strong class="uiterm">Add or Remove Programs</strong> method did not work for you. Using this method does not completely uninstall the 2007 Microsoft Office system. After you use this method, you can reinstall the 2007 Microsoft Office system.</p>



<p class="wp-block-paragraph"><strong>Note</strong> You must be logged on to Windows with a user account that is a computer administrator to complete this method. If this is your personal computer, you are likely already logged on with an administrator account. If this is a computer that is part of a network, you might have to ask the system administrator for help.</p>



<p class="wp-block-paragraph">To uninstall the existing 2007 Microsoft Office system if you cannot uninstall it by using the <strong class="uiterm">Add or Remove Programs</strong> feature, follow these steps:<br>Step 1: Remove any remaining Windows Installer packages of the 2007 Microsoft Office system:</p>



<ol class="wp-block-list"><li>Click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type installer, and then click <strong class="uiterm">OK</strong>.<br>This process opens the %windir%Installer folder.</li><li>On the <strong class="uiterm">View</strong> menu, click <strong class="uiterm">Details</strong>.<br><strong>Important</strong> To use the <strong class="uiterm">View</strong> menu in Windows Vista, you must press the ALT key first to display the menu bar, and then click the <strong class="uiterm">View</strong> menu.</li><li>On the <strong class="uiterm">View</strong> menu, click <strong class="uiterm">Choose Details</strong>.</li><li>Click to select the <strong class="uiterm">Subject</strong> check box, type 340 in the <strong class="uiterm">Width of selected column (in pixels)</strong> box, and then click <strong class="uiterm">OK</strong>.<br><strong>Note</strong> It may take several minutes for the subjects to appear next to each .msi file.</li><li>For Windows XP or Windows Server 2003, on the <strong class="uiterm">View</strong> menu, point to <strong class="uiterm">Arrange icons by</strong>, and then click <strong class="uiterm">Subject</strong>.<br>For Windows Vista, on the <strong class="uiterm">View</strong> menu, point to <strong class="uiterm">Sort By</strong>, and then click <strong class="uiterm">Subject</strong>. In Windows Vista, a <strong class="uiterm">User Account Control</strong> dialog box may be displayed with the following warning: <div class="kb_errormsgbody"><div class="kb_errorcontent"> <div class="errormsg">An unidentified program wants access to your computer</div></div></div><p>Click <strong class="uiterm">Allow</strong> when you see this warning message.</p></li><li>For each .msi file where the subject is &#8220;Microsoft Office <var>Product_Name</var> 2007,&#8221; right-click the .msi file, and then click <strong class="uiterm">Uninstall</strong>.<br><strong>Note </strong><var>Product_Name</var> is a placeholder for the name of the 2007 Microsoft Office product.</li></ol>



<h4 class="wp-block-heading" id="tocHeadRef">Step 2: Stop the Office Source Engine service:</h4>



<ol class="wp-block-list"><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type services.msc in the <strong class="uiterm">Open</strong> box, and then click <strong class="uiterm">OK</strong>.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type services.msc, and then press ENTER.</li><li>In the <strong class="uiterm">Services</strong> window, determine whether the Office Source Engine service is running. If this service is running, right-click <strong class="uiterm">Office Source Engine</strong>, and then click <strong class="uiterm">Stop</strong>.</li><li>Close the <strong class="uiterm">Services</strong> window.</li></ol>



<h4 class="wp-block-heading" id="tocHeadRef">Step 3: Remove any remaining 2007 Microsoft Office installation folders</h4>



<ol class="wp-block-list"><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type %CommonProgramFiles%\Microsoft Shared in the <strong class="uiterm">Open</strong> box, and then click <strong class="uiterm">OK</strong>.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type %CommonProgramFiles%\Microsoft Shared, and then press ENTER. <div class="indent"><strong>Note </strong>On a computer that is running a 64-bit version of Windows Vista, type %CommonProgramFiles(x86)%\Microsoft Shared, and then press ENTER.</div> </li><li>If the following folders are present, delete them: <ul><li>Office12</li><li>Source Engine </li></ul></li><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type %ProgramFiles%\Microsoft Office, and then click <strong class="uiterm">OK</strong>.<br><strong>Note</strong> On a computer that is running a 64-bit version of Windows XP, type %ProgramFiles(x86)%\Microsoft Office, and then press ENTER.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type %ProgramFiles%\Microsoft Office, and then press ENTER. <div class="indent"><strong>Note</strong> On a computer that is running a 64-bit version of Windows Vista, type %ProgramFiles(x86)%\Microsoft Office, and then press ENTER.</div> </li><li>On the root folder of each hard disk drive, locate and then open the MSOCache folder. If you cannot see the MSOCache folder, follow these steps: <ol><li>Open Windows Explorer, and then on the <strong class="uiterm">Tools</strong> menu click <strong class="uiterm">Folder Options</strong>.</li><li>Click the <strong class="uiterm">View</strong> tab.</li><li>In the Advanced settings pane under <strong class="uiterm">Hidden files and folders</strong>, click <strong class="uiterm">Show hidden files and folders</strong>.</li><li>Click to clear the <strong class="uiterm">Hide protected operating system files</strong> check box, and then click <strong class="uiterm">OK</strong>. </li></ol></li><li>Open the <var>drive_letter</var>:\MSOCache\All Users folder, and then delete every folder that has the following text in the folder name: 0FF1CE<p><strong>Note</strong> This text contains a zero and a one for the letters &#8220;O&#8221; and &#8220;I.&#8221;</p></li></ol>



<h4 class="wp-block-heading" id="tocHeadRef">Step 4: Remove any remaining 2007 Microsoft Office installation files</h4>



<ol class="wp-block-list"><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click Run, type %appdata%\microsoft\templates, and then click <strong class="uiterm">OK</strong>.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type %appdata%\microsoft\templates, and then press ENTER.</li><li>Delete the following files: <ul><li>Normal.dotm</li><li>Normalemail.dotm </li></ul></li><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type %appdata%\microsoft\document building blocks\<var>Language_ID</var>, and then click <strong class="uiterm">OK</strong>.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type <strong class="uiterm">%appdata%\microsoft\document building blocks<var>\Language ID</var></strong>, and then press ENTER.  <div class="kb_nowrapper"><strong>Notes</strong></div> <ul><li>If you cannot open this folder because the folder does not exist, go to step 6.</li><li><var>Language_ID</var> is a placeholder for the four-digit number that represents the language of the 2007 Microsoft Office system. For example, if you use the English version of the 2007 Microsoft Office system, the Language_ID value is 1033. If the Language_ID is not known, type %appdata%microsoftdocument building blocks, and then open the subfolder in that location. </li></ul></li><li>Delete the Building blocks.dotx file.</li><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type %temp%, and then click <strong class="uiterm">OK</strong>.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type %temp%, and then press ENTER.</li><li>On the <strong class="uiterm">Edit</strong> menu, click <strong class="uiterm">Select All</strong>.</li><li>On the <strong class="uiterm">File</strong> menu, click <strong class="uiterm">Delete</strong>.</li><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type %AllUsersprofile%\Application Data\MicrosoftOfficeData, and then click <strong class="uiterm">OK</strong>.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type %AllUsersprofile%\Application DataMicrosoftOfficeData, and then press ENTER.</li><li>Delete only the Opa12.dat file.</li></ol>



<h4 class="wp-block-heading" id="tocHeadRef">Step 5: Remove the registry subkeys of the 2007 Microsoft Office system</h4>



<p class="wp-block-paragraph"><strong>Important:</strong> This section, method, or task contains steps that tell you how to modify the registry. However, serious problems might occur if you modify the registry incorrectly. Therefore, make sure that you follow these steps carefully. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click the following article number to view the article in the Microsoft Knowledge Base: <a href="http://support.microsoft.com/kb/322756/" target="_blank" rel="noreferrer noopener">http://support.microsoft.com/kb/322756/</a></p>



<ol class="wp-block-list"><li>Locate and then delete the registry subkeys of the 2007 Microsoft Office system if they are present. To do this, follow these steps: <ol><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type regedit, and then click <strong class="uiterm">OK</strong>.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type regedit, and then click <strong class="uiterm">OK</strong>.</li><li>Click the following subkey: <div class="indent">HKEY_CURRENT_USER\Software\Microsoft\Office\12.0</div> </li><li>On the <strong class="uiterm">File</strong> menu, click <strong class="uiterm">Export</strong>, type DeletedKey01, and then click <strong class="uiterm">Save</strong>.</li><li>On the <strong class="uiterm">Edit</strong> menu, click <strong class="uiterm">Delete</strong>, and then click <strong class="uiterm">Yes</strong> to confirm the deletion.</li><li>For each registry subkey in the following list, repeat steps 1a through 1d. Change the name of the exported key by one for each subkey.<br>For example, type DeletedKey02 for the second key, type DeletedKey03 for the third key, and so on.<br><strong>Note</strong> In the following registry keys, the asterisk character (*) represents one or more characters in the subkey name.<br><strong>32-bit versions of Microsoft Windows:</strong>  <ul><li>HKEY_CURRENT_USER\Software\Microsoft\Office\12.0</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Delivery\SourceEngine\Downloads\*0FF1CE}-*</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*0FF1CE*</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UpgradeCodes\*F01FEC</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\*F01FEC</li><li>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ose</li><li>HKEY_CLASSES_ROOT\Installer\Features\*F01FEC</li><li>HKEY_CLASSES_ROOT\Installer\Products\*F01FEC</li><li>HKEY_CLASSES_ROOT\Installer\UpgradeCodes\*F01FEC</li><li>HKEY_CLASSES_ROOT\Installer\Win32Assemblies\*Office12* <p><strong>64-bit versions of Microsoft Windows: </strong></p></li></ul><ul><li>HKEY_CURRENT_USER\Software\Microsoft\Office\12.0</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\DeliverySourceEngineDownloads\*0FF1CE}-*</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*0FF1CE*</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Installer\UpgradeCodes\*F01FEC</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\*F01FEC</li><li>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ose</li><li>HKEY_CLASSES_ROOT\Installer\Features\*F01FEC</li><li>HKEY_CLASSES_ROOT\Installer\Products\*F01FEC</li><li>HKEY_CLASSES_ROOT\Installer\UpgradeCodes\*F01FEC</li><li>HKEY_CLASSES_ROOT\Installer\Win32Assemblies\*Office12*  </li></ul></li></ol></li><li>Locate the following registry subkey: <div class="indent">HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall</div><p><strong>Note</strong> On a computer that is running a 64-bit version of Windows, locate the following registry subkey instead:</p><div class="indent">HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall</div> </li><li>On the <strong class="uiterm">File</strong> menu, click <strong class="uiterm">Export</strong>, type UninstallKey01, and then click <strong class="uiterm">Save</strong>.</li><li>Under the Uninstall subkey that you located in step 2, click each subkey, and then determine whether the subkey has the following value assigned to it: <ul><li><strong>Name</strong>: UninstallString</li><li><strong>Data</strong>: <var>file_name path</var>\Office Setup Controller\Setup.exe path<br><strong>Note</strong> In this example, <var>file_name</var> is a placeholder for the name of an installation program, and path is a placeholder for the file path. </li></ul></li><li>If the subkey contains the name and the data that are described in step 4, click <strong class="uiterm">Delete</strong> on the <strong class="uiterm">Edit</strong> menu. Otherwise, go to step 4.</li><li>Repeat steps 4 and 5 until you locate and then delete every subkey that matches the name and the data that are described in step 4.</li><li>Close Registry Editor.</li></ol>



<h4 class="wp-block-heading" id="tocHeadRef">Step 6: Restart the computer</h4>



<p class="wp-block-paragraph">Restart the computer. If the uninstall was successful, you are finished and can now reinstall the 2007 Microsoft Office system if you want. If the uninstall was not successful, go to the &#8220;Next Steps&#8221; section.</p>



<p class="wp-block-paragraph"><strong>Additional registry information</strong></p>



<p class="wp-block-paragraph">HKEY_CURRENT_USER\Software\Microsoft\Office\Common\UserInfo</p>



<p class="wp-block-paragraph">Shadow subkeys for Windows Server 2003 and for earlier versions of Windows Server:</p>



<p class="wp-block-paragraph">HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Office\12.0</p>



<p class="wp-block-paragraph">Shadow subkeys for Windows Server 2008:</p>



<p class="wp-block-paragraph">HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software</p>



<p class="wp-block-paragraph">Source: <a href="http://support.microsoft.com/default.aspx/kb/928218" target="_blank" rel="noreferrer noopener">http://support.microsoft.com/default.aspx/kb/928218</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2009/12/03/how-to-manually-uninstall-the-2007-office-system-if-you-cannot-uninstall-it-by-using-the-add-or-remove-programs-feature/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">30</post-id>	</item>
	</channel>
</rss>
