<?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>Jephens Tech. &#187; Tips</title>
	<atom:link href="http://www.jephens.com/category/tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jephens.com</link>
	<description>Keeping Computers Happy Since 1997</description>
	<lastBuildDate>Wed, 30 Jun 2010 20:52:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Back Up Microsoft Virtual Server Images&#8230;</title>
		<link>http://www.jephens.com/2010/06/30/back-up-microsoft-virtual-server-images/</link>
		<comments>http://www.jephens.com/2010/06/30/back-up-microsoft-virtual-server-images/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 20:52:51 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Open File]]></category>
		<category><![CDATA[shadow Copy]]></category>
		<category><![CDATA[virtual Server]]></category>
		<category><![CDATA[vss]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=229</guid>
		<description><![CDATA[This article first appeared at the now-closed Win32Scripting site. Since I find it useful, and my bookmark no longer works, I have been unable to reach its author, Jeff Trumbull, so I hope he doesn't mind that I've archived it. Author: Jeff Trumbull Description: Backup files that make a Microsoft virtual server with only about [...]]]></description>
			<content:encoded><![CDATA[<p>This article first appeared at the now-closed <a href="http://cwashington.netreach.net/" target="_blank">Win32Scripting</a> site. Since I find it useful, and my bookmark no longer works, I have been unable to reach its author, Jeff Trumbull, so I hope he doesn't mind that I've archived it.</p>
<p><strong>Author</strong>: Jeff Trumbull</p>
<p><strong>Description</strong>:<br />
Backup files that make a Microsoft virtual server with only about 1 minute of down time. Suspends the virtual server, takes a shadow copy , starts the virtual server then copies virtual server files. This could be used to copy any open files. Requires vshadow.exe from vss sdk.</p>
<p><strong>Script</strong>:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">On</span> <span class="kw1">Error</span> <span class="kw1">Resume</span> <span class="kw1">Next</span></p>
<p><span class="kw1">Set</span> objShell = <span class="kw1">CreateObject</span> <span class="br0">&#40;</span><span class="st0">&quot;WScript.Shell&quot;</span><span class="br0">&#41;</span><br />
<span class="kw1">set</span> objFSO=<span class="kw1">CreateObject</span><span class="br0">&#40;</span><span class="st0">&quot;Scripting.FileSystemObject&quot;</span><span class="br0">&#41;</span><br />
<span class="kw1">Set</span> virtualServer = <span class="kw1">CreateObject</span><span class="br0">&#40;</span><span class="st0">&quot;VirtualServer.Application&quot;</span><span class="br0">&#41;</span><br />
DestBackupDir = <span class="st0">&quot;your backup path&quot;</span><br />
sExCmd = <span class="st0">&quot;CreateVSS.cmd&quot;</span><br />
<span class="kw1">Set</span> oFileSys = <span class="kw1">CreateObject</span><span class="br0">&#40;</span><span class="st0">&quot;Scripting.FileSystemObject&quot;</span><span class="br0">&#41;</span><br />
<span class="kw1">if</span> oFileSys.<span class="me1">FileExists</span><span class="br0">&#40;</span>sExCmd<span class="br0">&#41;</span> <span class="kw1">then</span> oFileSys.<span class="me1">DeleteFile</span><span class="br0">&#40;</span>sExCmd<span class="br0">&#41;</span><br />
<span class="kw1">set</span> oExCmd = oFileSys.<span class="me1">CreateTextFile</span><span class="br0">&#40;</span>sExCmd, CopyOverwrite<span class="br0">&#41;</span></p>
<p><span class="kw1">For</span> each objVM in virtualServer.<span class="me1">VirtualMachines</span><br />
&nbsp; &nbsp; &nbsp;<span class="co1">'See if vm machine is running. If so then do backup</span><br />
&nbsp; &nbsp; &nbsp;<span class="kw1">If</span> objVM.<span class="me1">State</span> = <span class="nu0">5</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">'Save state the virtual machine</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">set</span> saveTask = objVM.<span class="me1">Save</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">'Loop waiting for task completion - and display status</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">while</span> <span class="kw1">not</span> saveTask.<span class="me1">isComplete</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WScript.<span class="me1">Sleep</span> <span class="nu0">1000</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">wend</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">'Copy .VMC and .VSV files</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyArray = <span class="kw1">Split</span><span class="br0">&#40;</span>objVM.<span class="me1">File</span>,<span class="st0">&quot;\&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Filename = MyArray<span class="br0">&#40;</span><span class="kw1">Ubound</span><span class="br0">&#40;</span>MyArray<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;objFSO.<span class="me1">CopyFile</span> objVM.<span class="me1">File</span>,DestBackupDir &amp;amp; Filename<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyArray = <span class="kw1">Split</span><span class="br0">&#40;</span>objVM.<span class="me1">SavedStateFilePath</span>,<span class="st0">&quot;\&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Filename = MyArray<span class="br0">&#40;</span><span class="kw1">Ubound</span><span class="br0">&#40;</span>MyArray<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;objFSO.<span class="me1">CopyFile</span> objVM.<span class="me1">SavedStateFilePath</span>,DestBackupDir &amp;amp; Filename<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">End</span> <span class="kw1">If</span><br />
<span class="kw1">Next</span><br />
<span class="kw1">Set</span> objVM = <span class="kw1">Nothing</span></p>
<p><span class="co1">' Create Shadow copy of VM drive</span><br />
oExCmd.<span class="me1">WriteLine</span> <span class="st0">&quot;vshadow.exe -script=setvar1.cmd -p d:&quot;</span><br />
oExCmd.<span class="me1">WriteLine</span> <span class="st0">&quot;call setvar1.cmd&quot;</span><br />
oExCmd.<span class="me1">WriteLine</span> <span class="st0">&quot;vshadow.exe -el=%SHADOW_ID_1%,x:&quot;</span><br />
oExCmd.<span class="kw1">Close</span><br />
Result = objShell.<span class="me1">run</span><span class="br0">&#40;</span>sExCmd,vbMinimized, <span class="kw1">TRUE</span><span class="br0">&#41;</span></p>
<p><span class="co1">' Start VM machine up from saved state</span><br />
<span class="kw1">For</span> each objVM in virtualServer.<span class="me1">VirtualMachines</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">'See if vm machine is Saved. If so then resume</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">If</span> objVM.<span class="me1">State</span> = <span class="nu0">2</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">'Start virtual machine</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;objVM.<span class="me1">Startup</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">End</span> <span class="kw1">If</span><br />
<span class="kw1">Next</span></p>
<p><span class="kw1">Set</span> objVM = <span class="kw1">Nothing</span><br />
WScript.<span class="me1">Sleep</span> <span class="nu0">10000</span></p>
<p><span class="kw1">If</span> Result = <span class="nu0">0</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">'Loop through all vm machines</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">For</span> each objVM in virtualServer.<span class="me1">VirtualMachines</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">'See if vm machine is running. If so copy shadow backup of vm disk drives</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">If</span> objVM.<span class="me1">State</span> = <span class="nu0">5</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">'Copy virtual hard disks and undo disks</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">For</span> each vhd in objVM.<span class="me1">HardDiskConnections</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyArray = <span class="kw1">Split</span><span class="br0">&#40;</span>vhd.<span class="me1">undoHardDisk</span>.<span class="me1">file</span>,<span class="st0">&quot;\&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Filename = MyArray<span class="br0">&#40;</span><span class="kw1">Ubound</span><span class="br0">&#40;</span>MyArray<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SourceName = <span class="st0">&quot;x&quot;</span> &amp;amp; <span class="kw1">Right</span><span class="br0">&#40;</span>vhd.<span class="me1">undoHardDisk</span>.<span class="me1">file</span>,<span class="kw1">Len</span><span class="br0">&#40;</span>vhd.<span class="me1">undoHardDisk</span>.<span class="me1">file</span><span class="br0">&#41;</span><span class="nu0">-1</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;wscript.<span class="me1">echo</span> vhd.<span class="me1">undoHardDisk</span>.<span class="me1">file</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;wscript.<span class="me1">echo</span> SourceName<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;objFSO.<span class="me1">CopyFile</span> SourceName,DestBackupDir &amp;amp; Filename<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyArray = <span class="kw1">Split</span><span class="br0">&#40;</span>vhd.<span class="me1">HardDisk</span>.<span class="me1">file</span>,<span class="st0">&quot;\&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Filename = MyArray<span class="br0">&#40;</span><span class="kw1">Ubound</span><span class="br0">&#40;</span>MyArray<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SourceName = <span class="st0">&quot;x&quot;</span> &amp;amp; <span class="kw1">Right</span><span class="br0">&#40;</span>vhd.<span class="me1">HardDisk</span>.<span class="me1">file</span>,<span class="kw1">Len</span><span class="br0">&#40;</span>vhd.<span class="me1">HardDisk</span>.<span class="me1">file</span><span class="br0">&#41;</span><span class="nu0">-1</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;objFSO.<span class="me1">CopyFile</span> SourceName,DestBackupDir &amp;amp; Filename<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">Next</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">End</span> <span class="kw1">If</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">Next</span><br />
<span class="kw1">End</span> <span class="kw1">If</span></p>
<p><span class="co1">' Shutdown all shadow copy instances</span><br />
<span class="kw1">if</span> oFileSys.<span class="me1">FileExists</span><span class="br0">&#40;</span>sExCmd<span class="br0">&#41;</span> <span class="kw1">then</span> oFileSys.<span class="me1">DeleteFile</span><span class="br0">&#40;</span>sExCmd<span class="br0">&#41;</span><br />
<span class="kw1">set</span> oExCmd = oFileSys.<span class="me1">CreateTextFile</span><span class="br0">&#40;</span>sExCmd, CopyOverwrite<span class="br0">&#41;</span><br />
oExCmd.<span class="me1">WriteLine</span> <span class="st0">&quot;Echo y | vshadow.exe -da&quot;</span><br />
oExCmd.<span class="kw1">Close</span><br />
Result = objShell.<span class="me1">run</span><span class="br0">&#40;</span>sExCmd,vbMinimized, <span class="kw1">TRUE</span><span class="br0">&#41;</span></p>
<p><span class="co1">'Script ends</span><br />
wscript.<span class="me1">echo</span> <span class="st0">&quot;done&quot;</span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2010/06/30/back-up-microsoft-virtual-server-images/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resetting the Admin Password in Filemaker Server 9 on Windows</title>
		<link>http://www.jephens.com/2010/04/26/resetting-the-admin-password-in-filemaker-server-9-on-windows/</link>
		<comments>http://www.jephens.com/2010/04/26/resetting-the-admin-password-in-filemaker-server-9-on-windows/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 16:03:10 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[filemaker server]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=349</guid>
		<description><![CDATA[Long story short, you can't... at least not thru the interface. Instead, you need to totally blow out your configuration and reconfigure the server. However, it's not as bad as it seems - there's not so much to configure that it should be too big of a hassle. If you have console access, close your [...]]]></description>
			<content:encoded><![CDATA[<p>Long story short, you can't... at least not thru the interface.  Instead, you need to totally blow out your configuration and reconfigure the server.</p>
<p>However, it's not as bad as it seems - there's not so much to configure that it should be too big of a hassle.</p>
<p>If you have console access, close your databases, and make note of your settings.</p>
<ul>
<li>Stop the Filemaker Service.</li>
<li>Assuming a default installation, go to c:\program files\filemaker\filemaker server\admin\conf and delete the 4 XML files in there.</li>
<li>Restart the Filemaker Service</li>
<li>Reconnect to the Filemaker Console</li>
</ul>
<p>It'll re-walk you thru the wizard to set up the server, and the first thing you do is set up a username and password.  Your databases (again, assuming a default installation) will already be there, ready to go...</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2010/04/26/resetting-the-admin-password-in-filemaker-server-9-on-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User Licensing Gotchas</title>
		<link>http://www.jephens.com/2010/02/24/user-licensing-gotchas/</link>
		<comments>http://www.jephens.com/2010/02/24/user-licensing-gotchas/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 15:23:56 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[user license]]></category>
		<category><![CDATA[watchguard soho]]></category>
		<category><![CDATA[wireless]]></category>
		<category><![CDATA[wrt54g]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=339</guid>
		<description><![CDATA[Got a call from a client today who was unable to get his laptop to connect to his wireless network. The client has a standard Linksys WRT54G which is sitting behind a WatchGuard SOHO router.  (The WatchGuard predated my involvement with the client, and we determined it was easier to use the WRT54G as an [...]]]></description>
			<content:encoded><![CDATA[<p>Got a call from a client today who was unable to get his laptop to connect to his wireless network.</p>
<p>The client has a standard Linksys WRT54G which is sitting behind a WatchGuard SOHO router.  (The WatchGuard predated my involvement with the client, and we determined it was easier to use the WRT54G as an access point rather than ripping out the WatchGuard...)</p>
<p>Upon inspection, the laptop <em>WAS</em> connecting to the wireless network, it just didn't have internet access.  Vista would show it had Internet connectivity, but it would then just go away.</p>
<p>Upgraded the WRT54g's firmware, same result.  Changed from WEP to WPA-2. Same result.</p>
<p>Reviewed the logs on the WatchGuard and saw "User count exceeded. Packet dropped."</p>
<p><strong>A-HA!</strong></p>
<p>The WatchGuard, unlike most consumer routers, has a user limit to it.  It keeps track of 10 IPs and when IP number 11 hits the routing table, it gets whacked with a big ole' DENY rule.</p>
<p>When I plugged the laptop into the WRT54g via ethernet cable, the IP address was one of the 10 in the routing table and packets were allowed to flow.  The IP address assigned to the wireless interface was not in the table and therefore blocked.</p>
<p>We couldn't figure out why the laptop stopped working.  The client mentioned the laptop stopped working when we put a new computer on the floor.  We did a quick count of all devices on the network and only came up with 7...</p>
<p>Just as I was leaving, one of the warehouse guys came in holding his iPhone asking "Did something happen to the wireless network?"</p>
<p>Of course, something had -- I hadn't changed the Linksys back to WEP after the WPA-2 experiment, and he lost his connection... and the mystery of the additional devices was solved.</p>
<p>So, the moral is two-fold -- look for user licensing restrictions where you least expect them, and someone else's handheld device from home sitting on your network might have a negative impact on your ability to get work done.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2010/02/24/user-licensing-gotchas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SpamAssassin has Y2K + 10 Bug</title>
		<link>http://www.jephens.com/2010/01/02/spamassassin-has-y2k-10-bug/</link>
		<comments>http://www.jephens.com/2010/01/02/spamassassin-has-y2k-10-bug/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 04:33:29 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[esva]]></category>
		<category><![CDATA[spamassassin]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=332</guid>
		<description><![CDATA[Just a quick heads up, but Spam Assassin (which we use for filtering here at Jephens) has a mis-formed filtering rule which considers 2010 to be a "grossly in the future" and therefore can't be a valid date. This might have been true in Y2K, but in 2010, we're not so gross. If you use [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick heads up, but Spam Assassin (which we use for filtering here at Jephens) has a mis-formed filtering rule which considers 2010 to be a "grossly in the future" and therefore can't be a valid date.</p>
<p>This might have been true in Y2K, but in 2010, we're not so gross.</p>
<p>If you use <a href="http://www.global-domination.org/ESVA20.php" target="_blank">ESVA</a> like we do, there's a simple enough fix which is outlined in the <a href="http://www.global-domination.org/forum/viewtopic.php?f=14&amp;t=1948&amp;p=7843&amp;hilit=local.cf#p7843" target="_blank">ESVA Forums</a>.</p>
<p>Otherwise, you'll need to fix your local.cf rules or edit the 72_active.cf file.</p>
<p>Further details can be found at Mike Cardwell's blog: <a href="https://secure.grepular.com/blog/index.php/2010/01/01/spamassassin-2010-bug/" target="_blank">SpamAssassin 2010 bug</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2010/01/02/spamassassin-has-y2k-10-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making Exchange Public Folders Store Mail Items as E-Mail</title>
		<link>http://www.jephens.com/2009/12/23/making-exchange-public-folders-store-mail-items-as-e-mail/</link>
		<comments>http://www.jephens.com/2009/12/23/making-exchange-public-folders-store-mail-items-as-e-mail/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 22:17:56 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[exchange]]></category>
		<category><![CDATA[outlook]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=264</guid>
		<description><![CDATA[I keep coming up against this, and I keep forgetting it, so I figured I'd write it down here for all of our benefit. Exchange 2003 allowed us to easily mail enable public folders, so something sent to info@domain.invalid would go to a public folder where any number of staff could monitor the mailbox. However, [...]]]></description>
			<content:encoded><![CDATA[<p>I keep coming up against this, and I keep forgetting it, so I figured I'd write it down here for all of our benefit.</p>
<p>Exchange 2003 allowed us to easily mail enable public folders, so something sent to <a href="mailto:info@domain.invalid">info@domain.invalid</a> would go to a public folder where any number of staff could monitor the mailbox.</p>
<p>However, by default, the mail is stored in the Public Folder as a NOTE and not an E-MAIL (for the geeks in the audience IPM.POST vs. IPM.NOTE)</p>
<p>To make the public folder store incoming mail as emails, we need to make a quick registry change. This is all outlined in <a href="http://support.microsoft.com/kb/817809" target="_blank">MS KB 817809</a>.</p>
<p>Go to</p>
<p>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSExchangeIS\&lt;ServerName&gt;\Public-&lt;GUID&gt;</p>
<p>And create (or edit) the key:</p>
<p><strong>Value name</strong>: Incoming defaults to IPM.Note<br />
<strong>Value type</strong>: DWORD<br />
<strong>Value data</strong>: 1</p>
<p>Setting the value to 1 (true) stores things as IPM.NOTE (which is what we want). Setting the value to 0 sets it back to saving things as a post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2009/12/23/making-exchange-public-folders-store-mail-items-as-e-mail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtual Floppy Saves The Day</title>
		<link>http://www.jephens.com/2009/12/01/virtual-floppy-saves-the-day/</link>
		<comments>http://www.jephens.com/2009/12/01/virtual-floppy-saves-the-day/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 19:27:50 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[ubcd4win]]></category>
		<category><![CDATA[virtual floppy drive]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=256</guid>
		<description><![CDATA[A client has an oldish Dell Dimension 8400 with an Intel RAID card that requires you to "Press F6 to add Storage Drivers" when trying to repair Windows. This also means that UBCD4Win (my preferred repair tool) also doesn't recognize the drives. Happily, Dell has a set of the drivers available. Sadly, they're part of [...]]]></description>
			<content:encoded><![CDATA[<p>A client has an oldish Dell Dimension 8400 with an Intel RAID card that requires you to "Press F6 to add Storage Drivers" when trying to repair Windows. This also means that UBCD4Win (my preferred repair tool) also doesn't recognize the drives.</p>
<p>Happily, Dell has a set of the drivers available.</p>
<p>Sadly, they're part of a floppy image.</p>
<p>Grrr!</p>
<p>Enter <a href="http://chitchat.at.infoseek.co.jp/vmware/vfd.html">Virtual Floppy Drive 2.1</a>, a cool piece of shareware that can be glommed from <a href="http://chitchat.at.infoseek.co.jp/vmware/vfd.html">http://chitchat.at.infoseek.co.jp/vmware/vfd.html</a></p>
<p>This operates along the same line as Microsoft's <a href="http://download.microsoft.com/download/7/b/6/7b6abd84-7841-4978-96f5-bd58df02efa2/winxpvirtualcdcontrolpanel_21.exe">Virtual CD-ROM Control Panel for Windows XP</a>, which mounts an ISO image and has it appear as a drive letter.</p>
<p>VFD does the same thing, it mounts an image file (or just creates a small chunk of RAM and treats it like a blank floppy) and you assign it a drive letter.</p>
<p>I loaded the application up -- it's pretty self-explanatory -- assigned to Drive B: and then launched Dell's Floppy making utility, told it to write to Drive B and bingo! I had my extracted files.</p>
<p>From there, it was trivial to copy them to the appropriate install media and we were off to the races.</p>
<p>(I finally searched for a virtual solution, when the one floppy disk I could find was throwing errors. How happy are we that those things have (mostly) gone the way of the dinosaur?)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2009/12/01/virtual-floppy-saves-the-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Font Smoothing Box Does Nothing!  (Where is Fallout Boy?)</title>
		<link>http://www.jephens.com/2009/09/22/the-font-smoothing-box-does-nothing-where-is-fallout-boy/</link>
		<comments>http://www.jephens.com/2009/09/22/the-font-smoothing-box-does-nothing-where-is-fallout-boy/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 10:36:51 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[cleartype]]></category>
		<category><![CDATA[remote desktop]]></category>
		<category><![CDATA[terminal server]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=246</guid>
		<description><![CDATA[There are times when Microsoft makes me wonder. You develop this cool technology, ClearType, which helps reduce eyestrain, you put checkboxes all over the Remote desktop client allowing me to choose to use or not use it, you have it active in the shell... but then you casually ignore it and withhold it from me. [...]]]></description>
			<content:encoded><![CDATA[<p>There are times when Microsoft makes me wonder.  You develop this cool technology, ClearType, which helps reduce eyestrain, you put checkboxes all over the Remote desktop client allowing me to choose to use or not use it, you have it active in the shell... but then you casually ignore it and withhold it from me.  What gives?</p>
<p>Oh, a KB article sheds some light:</p>
<p style="padding-left: 60px;">The option to enable the<strong>Font smoothing</strong> feature is not available in the version of RDC that was released with Windows Server 2003. By default, Windows Server 2003 disables the<strong>Font smoothing</strong> feature in all remote connections. These connections include the connections that are established through RDC 6.0.</p>
<p>Happily, MS's dictatorship is matched only by its benevolence, because there's a "hotfix" available for this problem:</p>
<p><strong>KB946633:<a style="text-decoration: none;" href="http://support.microsoft.com/kb/946633" target="_blank">The "Font smoothing" feature has no effect in Windows Server 2003 terminal sessions</a></strong></p>
<p>It kinda cracks me up...</p>
<p style="padding-left: 30px;"><em>"We'll put the feature in."</em></p>
<p style="padding-left: 30px;"><em>"But it doesn't work. We should disable the checkboxes"</em></p>
<p style="padding-left: 30px;"><em>"Why would we do that?"</em></p>
<p>I bring this up because we just migrated a client over to a terminal server environment, and the number one complaint was "My fonts aren't fuzzy!"</p>
<p>Since I actually prefer the crispness of an LCD display, I didn't really notice, or care, but since I wasn't signing the check, I did my best to comply. I used bing to google the issue, and found the hotfix.</p>
<p>Of course, since it's a hotfix, it requires a reboot... so here I am at 5:30 AM, having just rebooted the server.</p>
<p>This hotfix is available via draconian download -- you fill out a form, they send an email with the link - however, they put the link in parentheses, so Outlook botches the conversion and breaks the link, resulting in the need for you to copy and paste the URL into your browser. From there, it's a Start &gt; Next &gt; Finish install and a reboot seals the deal.</p>
<p>As a side note: ClearType increases the bandwidth requirements, and is only available if you're running in "High Bandwidth" mode in the RDP 6.0 (or better) client. It also needs to be turned on in the desktop session.</p>
<p>In the RDP client:</p>
<p><a href="http://www.jephens.com/wp-content/uploads/2009/09/fontsmooth1.png"><img class="alignnone size-full wp-image-247" title="fontsmooth1" src="http://www.jephens.com/wp-content/uploads/2009/09/fontsmooth1.png" alt="fontsmooth1" width="405" height="439" /></a></p>
<p>Click Options &gt; Experience tab</p>
<p>The check off the "font smoothing" box.</p>
<p>On the Windows 2003 Desktop:</p>
<p><a href="http://www.jephens.com/wp-content/uploads/2009/09/fontsmooth2.png"><img class="alignnone size-medium wp-image-248" title="fontsmooth2" src="http://www.jephens.com/wp-content/uploads/2009/09/fontsmooth2-300x173.png" alt="fontsmooth2" width="300" height="173" /></a></p>
<p>Right click on the desktop &gt; Properties &gt;Appearance tab &gt; Effects button</p>
<p>That should do it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2009/09/22/the-font-smoothing-box-does-nothing-where-is-fallout-boy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Offline Files, Domain Removal and csccmd.exe</title>
		<link>http://www.jephens.com/2009/08/10/offline-files-domain-removal-and-csccmd-exe/</link>
		<comments>http://www.jephens.com/2009/08/10/offline-files-domain-removal-and-csccmd-exe/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 14:25:33 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[csccmd]]></category>
		<category><![CDATA[offline files]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=200</guid>
		<description><![CDATA[A client came to us with an interesting problem -- his laptop was removed from his company's domain and his documents were no longer available to him. He could see the mapped drive, and the folders and files, but when he tried to launch any of the files, he got an "Access Denied" error. So, [...]]]></description>
			<content:encoded><![CDATA[<p>A client came to us with an interesting problem -- his laptop was removed from his company's domain and his documents were no longer available to him. He could see the mapped drive, and the folders and files, but when he tried to launch any of the files, he got an "Access Denied" error.</p>
<p>So, offline files had his documents stored locally, but his lack of network credentials was keeping us from them.</p>
<p>While massively inconvenient, this is how it should be. No credentials, no files. Downside, of course, was I couldn't get the documents copied to the local drive.</p>
<p>Windows 2003 Resource Kit to the rescue!</p>
<p>There's a utility, csccmd.exe which, as the name imples, allows you to work with the "client side cache" (the pre-release name for Offline Files). The most recent version of the csccmd.exe has an option to EXTRACT files from the client side cache and put them on the local drive somewhere.</p>
<p>So, I grabbed the Windows 2003 Resource Kit, downloaded it, installed it,and ran csccmd.exe and it didn't work.</p>
<p>Wha?</p>
<p>Seems there is a <a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;884739">NEWER version of csccmd.exe</a> that is only available (officially) from MS Product Support Services (PSS). (Unofficially, <a href="http://www.collegehumor.com/video:1915736">use bing to google</a> csccmd.exe 1.1) which does the job. I downloaded it and copied it into c:\windows (just to avoid path issues).</p>
<p>(I assume it's only available from PSS because it <em>totally bypasses the security issue</em>.)</p>
<p>So, logged in as an administrator, I created a temporary folderand opened a command prompt (do I show my age by insisting on calling it a DOS window?) and typed:</p>
<p>csccmd.exe /extract:\\server\share /target:c:\temp\user /recurse</p>
<p>Ta-da!</p>
<p>The files copied, rights of the folder they were copied into prevails (which is to say that the ACL information was not extracted as well) and he's happy because he has his documents back.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2009/08/10/offline-files-domain-removal-and-csccmd-exe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fonts, Fonts and System Fonts</title>
		<link>http://www.jephens.com/2009/05/09/fonts-fonts-and-system-fonts/</link>
		<comments>http://www.jephens.com/2009/05/09/fonts-fonts-and-system-fonts/#comments</comments>
		<pubDate>Sun, 10 May 2009 03:57:32 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[great plains]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=190</guid>
		<description><![CDATA[Back when Windows 3.1 came out, it shipped with "display" fonts -- these were bitmapped fonts and the precursor to True type fonts -- who knew they'd still be vital in Windows Server 2003. A client had a problem with their Great Plains installation -- the fonts went all screwy and while they could still [...]]]></description>
			<content:encoded><![CDATA[<p>Back when Windows 3.1 came out, it shipped with "display" fonts -- these were bitmapped fonts and the precursor to True type fonts -- who knew they'd still be vital in Windows Server 2003.</p>
<p>A client had a problem with their Great Plains installation -- the fonts went all screwy and while they could still make out the display (barely) they couldn't print checks since the Mekorma font they were using wasn't playing nice.</p>
<p>Clicking on the start menu revealed the username to be in the Marlett font, a font Windows uses for drawing parts of its UI (the X in the close box, the minimize and maximize symbols, etc.). we've seen this problem before, and it's usually fixed by running TweakUI and reparing the font folder. Reboot and voila.</p>
<p><a href="http://www.jephens.com/wp-content/uploads/2009/05/gp_fontsize.jpg"><img class="alignright size-medium wp-image-191" title="Great Plains Font Issue" src="http://www.jephens.com/wp-content/uploads/2009/05/gp_fontsize-300x190.jpg" alt="Great Plains Font Issue" width="300" height="190" /></a>So we do that and the checks can print, but the display font is still not right in Great Plains. Everywhere else in Windows it's fine, but Great Plains is still hinky.</p>
<p>We try all sorts of things -- we delete all the fonts and reinstall them from the c:\windows\fonts folder of a sister Windows 2003 server; no dice.</p>
<p>We troll Great Plains newsgroups, we repair the font folder, we do a repair installation of Great Plains, nothing does the trick.</p>
<p>It has to be a font issue, but which fonts?</p>
<p>We have the Great Plains consultant send over his theory -- a Helvetica font set. Does nothing.</p>
<p>Over at Experts-Exchange (a site well worth the subscription), one of the Great Plains MVPs who was helping us out posted a screen shot of her splash screen, and when compared to ours, I thought to myself "that looks like MS Sans Serif" -- a system font from way back when.</p>
<p>Windows XP brought along a new set of fonts it used in its shell, and MS Sans Serif was deprecated in favor of Verdana, Tahoma and the "modern" UI fonts Microsoft was putting forth.</p>
<p>I opened up a share on a Windows 2000 box, and there was a whole bunch of .fon fonts that weren't on our system. So I copied them over to a temp folder and tried to install them onto our server. Only 3 showed up in the list, and there were a dozen or more in the folder.</p>
<p><a href="http://www.jephens.com/wp-content/uploads/2009/05/gp_fontsize2.jpg"><img class="alignright size-medium wp-image-192" title="Great Plains Corrected Font" src="http://www.jephens.com/wp-content/uploads/2009/05/gp_fontsize2-300x190.jpg" alt="Great Plains Corrected Font" width="300" height="190" /></a>Ah! They were hidden. I uncheck the hidden attribute and reinstall the fonts. All of them show up in the list.</p>
<p>I select all, click OK, I get a few "a version of this font is already installed" errors, and then they're done importing.</p>
<p>Now, MS Sans Serif is in the list of available fonts, and lo and behold, our screen is back to normal.</p>
<p>Many thanks to <a href="http://victoriayudin.com/" target="_blank">Victoria Yudin</a> who helped us with this issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2009/05/09/fonts-fonts-and-system-fonts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Filtering Mailing Lists using Access and Outlook</title>
		<link>http://www.jephens.com/2009/04/07/filtering-mailing-lists-using-access-and-outlook/</link>
		<comments>http://www.jephens.com/2009/04/07/filtering-mailing-lists-using-access-and-outlook/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 15:11:17 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[access]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[outlook]]></category>
		<category><![CDATA[sending mail]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=159</guid>
		<description><![CDATA[In what is becoming a series, we'll further tweak our code to allow for filtering of the query. In the original code, we open a query directly as a recordset. This fails if the query requires some parameters. (I'm not going to demonstrate a way to get user input and use that as the parameter. [...]]]></description>
			<content:encoded><![CDATA[<p>In what is becoming a <a href="tag/sending-mail">series</a>, we'll further tweak our code to allow for filtering of the query.</p>
<p>In the <a href="http://www.jephens.com/2007/05/13/how-to-send-e-mail-from-ms-access-using-outlook">original code</a>, we open a query directly as a recordset.  This fails if the query requires some parameters.</p>
<p>(I'm not going to demonstrate a way to get user input and use that as the parameter.  You should be able to copy and paste the code from the original user input sections of the code and modify as needed.)</p>
<p>To start, let's discuss the query and it's parameter.</p>
<p>In our original code, the query was just pulling a list of email addresses.  For this, let's filter that list of addresses by domain.<br />
<span id="more-159"></span><br />
(For our purposes, I'll assume you know how to write a query with parameters.  Here's a screeenshot of how yours should look.)</p>
<p style="text-align: center;"><a href="http://www.jephens.com/wp-content/uploads/2009/04/qry1.gif"><img class="size-full wp-image-169 aligncenter" title="Parameter Query" src="http://www.jephens.com/wp-content/uploads/2009/04/qry1.gif" alt="Parameter Query" width="221" height="220" /></a></p>
<p>You can see that we added a parameter called "domain" and the told Access that we want the query to return any record that has "domain" at the end.</p>
<p>So, when we run the query from the design window, we're prompted to enter the parameter:</p>
<p style="text-align: center;"><a href="http://www.jephens.com/wp-content/uploads/2009/04/qry3.gif"><img class="size-full wp-image-171 aligncenter" title="Entered Parameter" src="http://www.jephens.com/wp-content/uploads/2009/04/qry3.gif" alt="Entered Parameter" width="260" height="219" /></a></p>
<p>and when we click RUN we'll get all email addresses from the jephens.com domain.</p>
<p>That's all well and good, but if we run the code as it exists, we get an error:</p>
<p style="text-align: center;"><a href="http://www.jephens.com/wp-content/uploads/2009/04/qry4.gif"><img class="size-full wp-image-172 aligncenter" title="Too Few Parameters" src="http://www.jephens.com/wp-content/uploads/2009/04/qry4.gif" alt="Too Few Parameters" width="223" height="121" /></a></p>
<p>This occurs because the code doesn't know what to do with the parameter, so it punts and throws an error.</p>
<p>We'll need to handle this.  And for that, we have to use a <strong>QueryDef</strong> object and assign a <strong>parameter</strong>.</p>
<p>So, instead of:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">Set</span> MailList = db.<span class="me1">OpenRecordset</span><span class="br0">&#40;</span><span class="st0">&quot;MyEmailAddresses&quot;</span><span class="br0">&#41;</span></div>
<p>... we need to do a few things:</p>
<p>1. Create a QueryDef object</p>
<p>2 Assign our query to the object</p>
<p>3. Tell the object what our parameter is</p>
<p>4. Put the output of our query into our recordset.</p>
<p>Happily, this is pretty simple.</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">Dim</span> qryMail <span class="kw1">as</span> <span class="kw1">QueryDef</span></p>
<p><span class="kw1">Set</span> qryMail = currentdb.<span class="me1">querydefs</span><span class="br0">&#40;</span><span class="st0">&quot;MyEmailAddresses&quot;</span><span class="br0">&#41;</span></p>
<p>qryMail<span class="br0">&#40;</span><span class="st0">&quot;domain&quot;</span><span class="br0">&#41;</span> = <span class="st0">&quot;.com&quot;</span></p>
<p><span class="kw1">Set</span> MailList = qryMail.<span class="me1">OpenRecordset</span></div>
<p>And that will filter the recordset and only send mails to people in the .com namespace.</p>
<p>Of course, that's not the most user-friendly code, so you'd probably want to copy and paste some of the user input language and use that to fill in the parameter:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">Dim</span> Domain <span class="kw1">as</span> <span class="kw1">string</span>, qryMail <span class="kw1">as</span> <span class="kw1">QueryDef</span></p>
<p>Domain$ = <span class="kw1">InputBox</span>$<span class="br0">&#40;</span><span class="st0">&quot;Please enter domain you would like to filter. Leave blank to send to everyone on the list.&quot;</span>, <span class="st0">&quot;Users can be choosers!&quot;</span><span class="br0">&#41;</span></p>
<p><span class="kw1">Set</span> qryMail = currentdb.<span class="me1">querydefs</span><span class="br0">&#40;</span><span class="st0">&quot;MyEmailAddresses&quot;</span><span class="br0">&#41;</span></p>
<p>qryMail<span class="br0">&#40;</span><span class="st0">&quot;domain&quot;</span><span class="br0">&#41;</span> = domain$</p>
<p><span class="kw1">Set</span> MailList = qryMail.<span class="me1">OpenRecordset</span></div>
<p>The nice thing about the way we wrote the query is we can leave the domain part blank, and the query will return all the records.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2009/04/07/filtering-mailing-lists-using-access-and-outlook/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>
