<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8683693</id><updated>2011-12-13T09:03:36.071-06:00</updated><category term='Personal'/><category term='RDX'/><category term='Vista'/><category term='Games'/><category term='Script'/><category term='rrdtool'/><category term='Database'/><category term='Family'/><category term='Parenting'/><category term='Wii'/><category term='Thoughts'/><category term='ASP'/><category term='Error'/><category term='Servers'/><category term='.NET'/><title type='text'>Kevin Marquette - The things I do.</title><subtitle type='html'>Some problems you just cant search on.  Here are some I wish were more searchable and this blog is my attempt to make that happen.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>70</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8683693.post-4092431402076786699</id><published>2011-06-11T15:30:00.002-05:00</published><updated>2011-06-11T15:39:24.108-05:00</updated><title type='text'>www.KevinMarquette.com</title><content type='html'>I just set up &lt;a href="http://www.kevinmarquette.com"&gt;www.kevinmarquette.com&lt;/a&gt; (and &lt;a href="http://www.ithinkincode.com"&gt;www.ithinkincode.com&lt;/a&gt;).  I think a structured website will serve my needs better than a blog.  My blogs have served me well. So I am moving from blogger over to google sites.  We will see how this works.  I will leave this blog up because it is already well indexed and linked to from different sites.  I will slowly work on moving content over to the new site.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One of my main goals of the new site is to continue with my goals of this blog.  I also have some other ideas, but that will be the start of it.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-4092431402076786699?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/4092431402076786699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=4092431402076786699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/4092431402076786699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/4092431402076786699'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2011/06/wwwkevinmarquettecom.html' title='www.KevinMarquette.com'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-2280160422146315803</id><published>2009-06-27T07:13:00.001-05:00</published><updated>2009-06-27T07:13:01.056-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rrdtool'/><title type='text'>rrdtool data resolution</title><content type='html'>One concept I had to adjust to was deciding on the resolution of the data I wanted to collect. By resolution I mean how detailed the data is. Let us use the example of CPU usage. If I intend to look at the last 1 hour vs the last 30 days, I would see the data at different details. My 1 hour window may show me every single data point (@5 sec). Every peak and dip is exactly what it was. Each pixel is 5 sec and I have 720 data points (60 min, 12 points a min).&lt;br /&gt;&lt;br /&gt;Now when we look at the 30 days we will not be able to include that much detail on the screen at once. My 30 day window will show data points @60 minute ticks. If the CPU slowly goes up and down, that's not an issue. But that is not often the case. It is very spiky, up and down very quickly at times. If you only take a reading every 60 min, its any ones guess if you read a spike or a dip.&lt;br /&gt;&lt;br /&gt;In this case I would record the min,max, and average values. When you chart that, the max will be the spikes to show you how hard it gets pushed. The min will show you if it ever gets to idle. The average is metric that gives you the most value when looking at 30 day window.&lt;br /&gt;&lt;br /&gt;When you create a rrdtool database, you define all those options. You can define multiple counters to the same thing at different resolutions. You define a database and indicate how often the value will be recorded. Then you can define different resolutions of that data. You will still just record the CPU every 5 sec and the rrdtool will keep track of those data windows and resolutions.&lt;br /&gt;&lt;br /&gt;We can define a database that gets a value every 5 sec for our CPU dataset. We can define a detailed resolution of 1 hour and a second one of 30 days. The first RRA records a value every tick for 720 ticks. each tick is 5 sec, so that's 1 hour. The RRA would be "RRA:AVERAGE:0.5:1:720". The second RRA averages the values of 720 values (1 hour) over 30 days (720 ticks). That RRA is "RRA:AVERAGE:0.5:720:720".&lt;br /&gt;&lt;br /&gt;Let us pick some new numbers. What if we want 30 sec average for 2 days. 30 sec is 6 values of data. 2 days is 5760 intervals of 30 sec. So the RRA is "RRA:AVERAGE:0.5:6:5760".&lt;br /&gt;&lt;br /&gt;So our final rrdtool database is this:&lt;br /&gt;&lt;br /&gt;rrdtool create temp.rrd -s 5&lt;br /&gt;DS:cpu:GAUGE:30:0:100&lt;br /&gt;RRA:AVERAGE:0.5:1:720&lt;br /&gt;RRA:AVERAGE:0.5:720:720&lt;br /&gt;RRA:AVERAGE:0.5:6:5760&lt;br /&gt;&lt;br /&gt;What I want you to do is read over this and then return to the examples on the rrdtool's website. Once this information clicks, come back here and read it again. I know the RRA code is over your head if this is your intro, but when you return it will be a very solid example.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-2280160422146315803?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/2280160422146315803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=2280160422146315803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/2280160422146315803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/2280160422146315803'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/06/rrdtool-data-resolution.html' title='rrdtool data resolution'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-6804273965601163962</id><published>2009-06-24T07:52:00.000-05:00</published><updated>2009-06-24T07:52:04.851-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rrdtool'/><title type='text'>Intro to rrdtool</title><content type='html'>I recently discovered a simple tool that has lots of power behind it.  &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-error"&gt;rrdtool&lt;/span&gt; is a round robin database that stores time dependant values and easily graphs them.  It is a database where you insert values at &lt;span id="SPELLING_ERROR_1" class="blsp-spelling-corrected"&gt;consistent&lt;/span&gt; intervals and the query results are in the form of a graph.   It is a round robin database because it only saves a set number of values and overwrites the oldest one every time.&lt;br /&gt;&lt;br /&gt;Now that I pointed out what it is, let us talk about what we can do with that.  The first thing that jumps out (and what it was designed for) is performance monitoring.  You can set up a task to save the &lt;span id="SPELLING_ERROR_2" class="blsp-spelling-corrected"&gt;CPU&lt;/span&gt;, network, disk, and ram activity to this file every 5 sec and then generate charts to display it.  Any thing you can get a counter on.  Computer &lt;span id="SPELLING_ERROR_3" class="blsp-spelling-corrected"&gt;temperature&lt;/span&gt;, event log errors, ping times, terminal server connections, and anything else you can think of.  Things like the daily &lt;span id="SPELLING_ERROR_4" class="blsp-spelling-corrected"&gt;temperature&lt;/span&gt;, number of visitors to your office, spam messages, or even your daily bank balance.&lt;br /&gt;&lt;br /&gt;This is great for performance monitoring because the database &lt;span id="SPELLING_ERROR_5" class="blsp-spelling-corrected"&gt;automatically&lt;/span&gt; discards old data. To put it another way, it only keeps the data for as long as you think its important.  Once you define how much you want to store and at what resolution, the database is then set &lt;span id="SPELLING_ERROR_6" class="blsp-spelling-error"&gt;in size&lt;/span&gt;.  It never grows or shrinks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-6804273965601163962?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/6804273965601163962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=6804273965601163962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/6804273965601163962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/6804273965601163962'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/06/intro-to-rrdtool.html' title='Intro to rrdtool'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-4170871934209017821</id><published>2009-05-05T14:43:00.002-05:00</published><updated>2009-05-05T14:52:51.567-05:00</updated><title type='text'>RemoteApp Disconnected Because of a protocol error in Windows 7 RC1</title><content type='html'>The first thing I did after installing Windows 7 RC1 was to toss on my remote apps off of a test server.  I have a 2008 Terminal Server that publishes a few common apps for seamless integration. I received a few dissconnects to the remote apps on both windows 7 RC1 boxes that I set up.  Here is that message:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;RemoteApp Disconnected: Because of a protocol error, this session will be disconnected. Please try connecting to the remote computer again.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It is too soon for me to pin this on the release canidate because I have only spot tested my terminal server set up.  But a quick search of the message did not give me many results.  As I get more details, I will update this post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-4170871934209017821?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/4170871934209017821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=4170871934209017821' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/4170871934209017821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/4170871934209017821'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/05/remoteapp-disconnected-because-of.html' title='RemoteApp Disconnected Because of a protocol error in Windows 7 RC1'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-7574373276617008171</id><published>2009-04-17T07:46:00.000-05:00</published><updated>2009-04-17T07:46:00.415-05:00</updated><title type='text'>Creating the Cho'gall Ninja list</title><content type='html'>With my &lt;a href="http://www.badanatomy.com/"&gt;weekly raffle &lt;/a&gt;starting to pick up I decided to look for another service that I could provide.  Something the community needs and that I can use to promote my &lt;a href="http://www.badanatomy.com/"&gt;raffle&lt;/a&gt;.  Our server has a huge problem with people taking loot that they should not take.  We call them ninjas.&lt;br /&gt;&lt;br /&gt;I spent a little bit of time looking at past reports and screenshots of ninjas on our server that people have ran into.  I tossed them all on one page with links to the forums post and to the screenshot.  I skiped over any report where I did not have a screenshot to back it up.&lt;br /&gt;&lt;br /&gt;Here is the &lt;a href="http://www.badanatomy.com/ninja.htm"&gt;Cho'gall Ninja list&lt;/a&gt;.  Its a simple page that I am maintaining by hand, but it should get the job done.  If you are looking to get a name added to the &lt;a href="http://www.badanatomy.com/ninja.htm"&gt;ninja list&lt;/a&gt;, then make a forum post and include a good screenshot of what happened.  I will try to check on this every few days to keep the list up to date.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-7574373276617008171?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/7574373276617008171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=7574373276617008171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7574373276617008171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7574373276617008171'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/04/creating-chogall-ninja-list.html' title='Creating the Cho&apos;gall Ninja list'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-2237344527629897797</id><published>2009-04-04T07:43:00.001-05:00</published><updated>2009-04-06T10:01:06.498-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>VB.Net Auto grow Textbox as text changes</title><content type='html'>I have several &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-error"&gt;textboxes&lt;/span&gt; on a form that I would like them to grow as the user types text into them. Sometimes they will only put in a few words, other times it can be several lines of text. I expected this to be a very simple process but had a hard time finding a solution.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Several people did talk about using the TextBox.lines.count to figure out how tall to make the box. The problem with that is you must turn word wrap off for that to work. Sometimes you can do that. In my case, I needed the lines to wrap.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I did find &lt;span id="SPELLING_ERROR_1" class="blsp-spelling-corrected"&gt;references&lt;/span&gt; to Graphics.&lt;span id="SPELLING_ERROR_2" class="blsp-spelling-error"&gt;MeasurString&lt;/span&gt;(String,Font) as &lt;span id="SPELLING_ERROR_3" class="blsp-spelling-error"&gt;SizeF&lt;/span&gt; to figure out how long a string would be with a given font. I was about to overlook the effect different fonts and sizes would have had but it looks like this will solve both.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the end, I took each line in the &lt;span id="SPELLING_ERROR_4" class="blsp-spelling-error"&gt;txt&lt;/span&gt; box. I calculated how many times each line would wrap and add that to my line count. Then used the Textbox.Font.Height to figure out how high each line would be. I also added 10 &lt;span id="SPELLING_ERROR_5" class="blsp-spelling-corrected"&gt;pixels&lt;/span&gt; to account for any padding at the top and bottom of the text box.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is the code I ended up with:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Dim&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;span id="SPELLING_ERROR_6" class="blsp-spelling-error"&gt;numberOfLines&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Integer&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; = 0&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Dim&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; e &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; Graphics = Graphics.&lt;span id="SPELLING_ERROR_7" class="blsp-spelling-error"&gt;FromImage&lt;/span&gt;(&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;New&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; Bitmap(300, 300))&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Dim&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;span id="SPELLING_ERROR_8" class="blsp-spelling-error"&gt;StringSize&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;New&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;span id="SPELLING_ERROR_9" class="blsp-spelling-error"&gt;SizeF&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;For&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Each&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; item &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;In&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;span id="SPELLING_ERROR_10" class="blsp-spelling-error"&gt;tBox&lt;/span&gt;.Lines&lt;br /&gt;&lt;span id="SPELLING_ERROR_11" class="blsp-spelling-error"&gt;StringSize&lt;/span&gt; = e.&lt;span id="SPELLING_ERROR_12" class="blsp-spelling-error"&gt;MeasureString&lt;/span&gt;(item, &lt;span id="SPELLING_ERROR_13" class="blsp-spelling-error"&gt;tBox&lt;/span&gt;.Font)&lt;br /&gt;&lt;span id="SPELLING_ERROR_14" class="blsp-spelling-error"&gt;numberOfLines&lt;/span&gt; += Math.Floor(StringSize.Width / &lt;span id="SPELLING_ERROR_15" class="blsp-spelling-error"&gt;tBox&lt;/span&gt;.Width) + 1&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Next&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span id="SPELLING_ERROR_16" class="blsp-spelling-error"&gt;tBox&lt;/span&gt;.Height = &lt;span id="SPELLING_ERROR_17" class="blsp-spelling-error"&gt;numberOfLines&lt;/span&gt; * tBox.Font.Height + 10&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I added a call to that to the &lt;span id="SPELLING_ERROR_18" class="blsp-spelling-error"&gt;TextChanged&lt;/span&gt; event handler for each text box. Don't forget that you have to adjust the other items on your form if you make the text box grow. It will overlap other elements if left unchecked.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-2237344527629897797?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/2237344527629897797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=2237344527629897797' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/2237344527629897797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/2237344527629897797'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/04/vbnet-auto-grow-textbox-as-text-changes.html' title='VB.Net Auto grow Textbox as text changes'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-3248816623682348754</id><published>2009-04-03T08:09:00.003-05:00</published><updated>2009-04-16T14:46:37.629-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Creating the Bad Anatomy raffle for Warcraft</title><content type='html'>Recently Blizzard changed some rules to &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-error"&gt;Warcraft&lt;/span&gt; that now &lt;span id="SPELLING_ERROR_1" class="blsp-spelling-corrected"&gt;allows&lt;/span&gt; people to run casinos in game. They are crude and the operators fill the city spam. You don't know who you can trust but people still play.&lt;br /&gt;&lt;br /&gt;An idea I had worked on in the past was to create a lottery for players in wow. We had a lot of it planned but ended not doing because the rules were unclear if it was allowed or not. Now that the rules have changed and we are ready to start it up. So I present to you &lt;a href="http://www.badanatomy.com/"&gt;Bad Anatomy's &lt;span id="SPELLING_ERROR_2" class="blsp-spelling-error"&gt;Cho'gall&lt;/span&gt; weekly raffle. &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Our initial idea was for a lottery where people could pick numbers and we use real world event to pick the numbers (like the multi-state lottery numbers). But our biggest issue with that is it could take a long time for a winner. In the end we decided on a raffle.&lt;br /&gt;&lt;br /&gt;For every 10G someone donates, we will give them one raffle ticket. The ticket is given just so the purchaser knows what his numbers are and adds to the &lt;span id="SPELLING_ERROR_3" class="blsp-spelling-corrected"&gt;realism&lt;/span&gt; of it. A character was created just to handle the raffle. So every message in and out from him is kept &lt;span id="SPELLING_ERROR_4" class="blsp-spelling-corrected"&gt;separate&lt;/span&gt; from all our other mail.&lt;br /&gt;&lt;br /&gt;There are 2 parts that make this work. First is the in-game mod I had to develop to receive gold, issue tickets and track tickets, and to pick the winner. It &lt;span id="SPELLING_ERROR_5" class="blsp-spelling-corrected"&gt;initially&lt;/span&gt; started out easier then I thought it should be and ended slightly more challenging then I thought it would be. I may go into those details in a later post. I can run my character up to the mail box and issue a command that will allow him to open &lt;span id="SPELLING_ERROR_6" class="blsp-spelling-corrected"&gt;every&lt;/span&gt; message, collect the gold, calculate how many tickets someone gets, and then send each of them a message with their numbers.&lt;br /&gt;&lt;br /&gt;The second part is the supporting website &lt;a href="http://www.badanatomy.com/"&gt;Bad Anatomy's &lt;span id="SPELLING_ERROR_7" class="blsp-spelling-error"&gt;Cho'gall&lt;/span&gt; weekly raffle &lt;/a&gt;. This is the feature that makes it real. People can check the site to see when the next raffle starts or ends, see the winners, and all the rules to the game. We took a domain name we already had (&lt;a href="http://www.badanatomy.com/"&gt;Bad Anatomy&lt;/a&gt;) and &lt;span id="SPELLING_ERROR_8" class="blsp-spelling-corrected"&gt;re purposed&lt;/span&gt; it for the raffle. I tried to give it a simple and clean look. I tried to look at lottery sites for examples and they all felt &lt;span id="SPELLING_ERROR_9" class="blsp-spelling-corrected"&gt;overwhelming&lt;/span&gt; with all the stuff they tried to pack onto one page. In the end, I created the look I wanted.&lt;br /&gt;&lt;br /&gt;This experiment is just getting started so I cannot tell you how well people are liking it or even how long I will run it. Head over to &lt;a href="http://www.badanatomy.com/"&gt;Bad Anatomy's &lt;span id="SPELLING_ERROR_10" class="blsp-spelling-error"&gt;Cho'gall&lt;/span&gt; weekly raffle &lt;/a&gt;to see how its going.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-3248816623682348754?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/3248816623682348754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=3248816623682348754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/3248816623682348754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/3248816623682348754'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/04/creating-bad-anatomy-raffle-for.html' title='Creating the Bad Anatomy raffle for Warcraft'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-1847085539736158910</id><published>2009-03-31T07:43:00.000-05:00</published><updated>2009-03-31T12:36:44.121-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Tracking Down RTE: 35601 Element Not Found</title><content type='html'>We recently turned on some new features of a product we were using and would get this RTE on a few records within the application.  The number of problem records were small, the total number of records worked with in a day made them a regular &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-corrected"&gt;occurrence&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;I went over to our test &lt;span id="SPELLING_ERROR_1" class="blsp-spelling-corrected"&gt;environment&lt;/span&gt;.  It was up to current patch levels, but the data was a few months old.  Almost all of my broken records in live were broken in test.  That gave me hope that its an existing data issue and not something &lt;span id="SPELLING_ERROR_2" class="blsp-spelling-corrected"&gt;actively&lt;/span&gt; breaking records.&lt;br /&gt;&lt;br /&gt;The nice thing about our test &lt;span id="SPELLING_ERROR_3" class="blsp-spelling-corrected"&gt;environment&lt;/span&gt; is that I am &lt;span id="SPELLING_ERROR_4" class="blsp-spelling-corrected"&gt;usually&lt;/span&gt; the only person using it.  That makes it easy to toss the &lt;span id="SPELLING_ERROR_5" class="blsp-spelling-error"&gt;SQL&lt;/span&gt; &lt;span id="SPELLING_ERROR_6" class="blsp-spelling-error"&gt;Profiler&lt;/span&gt; on with out having to filter it to just my &lt;span id="SPELLING_ERROR_7" class="blsp-spelling-corrected"&gt;traffic&lt;/span&gt;.  I started the &lt;span id="SPELLING_ERROR_8" class="blsp-spelling-error"&gt;profiler&lt;/span&gt; at the point just before clicking the button that generated the RTE and paused it just after the message came up.  I closed the app and repeated this process a few times for both working and broken records.&lt;br /&gt;&lt;br /&gt;Looking at the queries that each ran,  the broken records all &lt;span id="SPELLING_ERROR_9" class="blsp-spelling-error"&gt;stopped&lt;/span&gt; at the same point after the same query was run.  That tells me that the application is processing the queries as it runs them and the last one before it &lt;span id="SPELLING_ERROR_10" class="blsp-spelling-error"&gt;stopped&lt;/span&gt; is my suspect query.  If both the broken and the working records had the same full list of queries I would have had to check them all.   That would have indicated to me that it &lt;span id="SPELLING_ERROR_11" class="blsp-spelling-error"&gt;pre-loads&lt;/span&gt; most of the data before processing it.  I was in luck.&lt;br /&gt;&lt;br /&gt;The query was a large one but the only difference between all records was the record ID.  So it is the same query running for both working and non-working records.  Running the query for all of them gave me different sized record sets.  Some had more a lot of records and some had very few.  One thing did jump out at me as I looked at the raw data.&lt;br /&gt;&lt;br /&gt;A few null values jumped out to me in a column that looked like it should have a value.  With my experience with the data I knew it should have had a value.  I saw one column that had data in it directly related to reference I expected instead of that null value.  Because this looked like a complicated query, my first guess was a bad join. &lt;br /&gt;&lt;br /&gt;That column was not the only one with nulls in it but every time it had a null the 3 columns to the right also had nulls.  &lt;span id="SPELLING_ERROR_12" class="blsp-spelling-corrected"&gt;That's&lt;/span&gt; what I expect a bad join to look like.  So I started reformatting the query with proper indents and &lt;span id="SPELLING_ERROR_13" class="blsp-spelling-corrected"&gt;white space&lt;/span&gt;.  It did contain a few union calls.  The first query in the union &lt;span id="SPELLING_ERROR_14" class="blsp-spelling-corrected"&gt;practically&lt;/span&gt; returned the same results.  It looked the same except for a few less rows.  My null values were still mixed into the good data.&lt;br /&gt;&lt;br /&gt;I focused on the table columns that were null and the one column that contained directly related information.  The &lt;span id="SPELLING_ERROR_15" class="blsp-spelling-corrected"&gt;joins&lt;/span&gt; between them looked correct.   Exactly how I would have written them.   After &lt;span id="SPELLING_ERROR_16" class="blsp-spelling-corrected"&gt;rewriting&lt;/span&gt; the query as  simple 2 table join that used the same logic, I ended up with the same results.  It was a join that I expected to be valid every time but in this case there are times where its not.  &lt;br /&gt;&lt;br /&gt;It turned out to be a flaw in the application logic where it allowed some changes to one set of tables that should have enforced changes in another.  But they were enforcing them at the application level instead.  Other parts of the system enforced it &lt;span id="SPELLING_ERROR_17" class="blsp-spelling-corrected"&gt;correctly&lt;/span&gt;,  this one point in the application did not.  It overlooked the fact that it needed to enforce it and I almost expect the developer to make the same assumption I made.&lt;br /&gt;&lt;br /&gt;I know this is a &lt;span id="SPELLING_ERROR_18" class="blsp-spelling-error"&gt;little&lt;/span&gt; different from my usual problem/solution posts but this was mostly an internal product and I wanted to document the process I took to &lt;span id="SPELLING_ERROR_19" class="blsp-spelling-corrected"&gt;solve&lt;/span&gt; it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-1847085539736158910?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/1847085539736158910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=1847085539736158910' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1847085539736158910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1847085539736158910'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/03/tracking-down-rte-35601-element-not.html' title='Tracking Down RTE: 35601 Element Not Found'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-1415245301548231083</id><published>2009-03-27T07:12:00.001-05:00</published><updated>2009-03-27T07:12:00.409-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Parenting'/><category scheme='http://www.blogger.com/atom/ns#' term='Family'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Quiet/Loud Game</title><content type='html'>I posted this in another forum and got a lot of good feedback on it. Here is a more formal write up on a game I play with my kids at home. The Quiet Loud Game.&lt;br /&gt;&lt;br /&gt;I have 2 young kids at home. One is almost 4 and the other is 17 months. The 4 year old would often make lots on noise like kids do and our attempts to quiet her down were not working very well. Our problem was she didn't truly understand the concept of quiet. She knew she was doing something wrong, but had no idea what. That did not work very well for either of us. I came up with a new game to play.&lt;br /&gt;&lt;br /&gt;I turn the radio on to some music and turn the volume up a bit. We run around the house being loud. I yell the work loud or noisy several times and we all jump, and stomp, and scream, and yell, and slam doors, and bang on the floor. Then we start a loud count down from 3, 2, 1 and then I &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-corrected"&gt;whisper&lt;/span&gt; the word quiet as I turn the volume on the radio way down.&lt;br /&gt;&lt;br /&gt;Then we all &lt;span id="SPELLING_ERROR_1" class="blsp-spelling-corrected"&gt;whisper&lt;/span&gt;, and tip toe, and sneak, and shush, and softly open and close doors. Only making quiet sounds. Then we start a soft count down from 3, 2, 1 and then I yell the work loud as I turn the radio back up.&lt;br /&gt;&lt;br /&gt;We repeat this process several times until someone starts to wear out (&lt;span id="SPELLING_ERROR_2" class="blsp-spelling-corrected"&gt;usually&lt;/span&gt; me) and we end it while we are all quiet. I tell them they did a great job and we all give each other high fives.&lt;br /&gt;&lt;br /&gt;Not only does this help teach them the concept of loud and quiet, it also gives them an outlet for that noise. And we all had a lot of fun doing it. I made a special point to do all the stuff we consider loud when doing the loud part.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-1415245301548231083?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/1415245301548231083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=1415245301548231083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1415245301548231083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1415245301548231083'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/03/quietloud-game.html' title='Quiet/Loud Game'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-1689656926596257491</id><published>2009-03-22T07:14:00.000-05:00</published><updated>2009-03-22T13:27:56.329-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Parenting'/><category scheme='http://www.blogger.com/atom/ns#' term='Family'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Left/Right Airplane Game</title><content type='html'>My little girl loves airplaines. We live close enought to an airport that she can spot them in the sky all the time. Once of her favorite games is to fly like an airplaine on my sholder. I holder her up with her legs out behind and her arms out to the side. She tells me where to go as we fly around the house.&lt;br /&gt;&lt;br /&gt;Recently I changed it so she has to say Left or Right. As soon as she says a direction, we go that way. Even if she is pointing the other way. After doing this a few time, she was pointing the same direction she was saying. It worked out well and we had fun doing it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-1689656926596257491?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/1689656926596257491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=1689656926596257491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1689656926596257491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1689656926596257491'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/03/leftright-airplane-game.html' title='Left/Right Airplane Game'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-7668383344523248579</id><published>2009-03-16T13:31:00.000-05:00</published><updated>2009-03-16T13:33:07.042-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughts'/><title type='text'>W32.Downadup.C is in the wild.  It looks like Conflicker is starting to evolve.</title><content type='html'>It recently received a new set of instructions that are designed more to protect it then to make it spread any more.  It is continuing to attack antivirus software that is used to clean it up.  Just as the security industry has gotten into its system of communicating with its self, the virus has gotten a new algorithm that makes it 200 times harder. &lt;br /&gt;&lt;br /&gt;This cat and mouse game is about to get interesting.  We have yet to see a payload from this virus.  There is no question that the attack has changed at this point.  Without using any new attack to build a larger infection base, it has to hold what it has already.  You don’t fight that hard to keep a system infected unless you have a plan for it later.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://forums2.symantec.com/t5/Malicious-Code/W32-Downadup-C-Digs-in-Deeper/ba-p/393245%3bjsessionid=1A353B585C96A581ECB9D3536C31ADCB"&gt;https://forums2.symantec.com/t5/Malicious-Code/W32-Downadup-C-Digs-in-Deeper/ba-p/393245%3bjsessionid=1A353B585C96A581ECB9D3536C31ADCB&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-7668383344523248579?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/7668383344523248579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=7668383344523248579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7668383344523248579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7668383344523248579'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/03/w32downadupc-is-in-wild-it-looks-like.html' title='W32.Downadup.C is in the wild.  It looks like Conflicker is starting to evolve.'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-5369879395784125241</id><published>2009-03-16T07:47:00.001-05:00</published><updated>2009-03-16T07:47:01.418-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>VB Dates and DBNull.Value SQL</title><content type='html'>One think I find that I have to look up often is how to work with database dates in vb.net code. I can never remember the best way to do it and end up looking at older code all the time to do it.&lt;br /&gt;&lt;br /&gt;Dates are not &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;usually&lt;/span&gt; the problem as much as empty dates. Moving an empty date from vb to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;SQL&lt;/span&gt; and back again. I &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;don't&lt;/span&gt; expect my solution to be the best solutions. &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;Personally&lt;/span&gt; I feel its too complicated so there had to be a better solution that I just have not found yet. With that said, here is how I handle null dates in vb.net.&lt;br /&gt;&lt;br /&gt;I don't like working with null values when crossing between applications and code. Mostly &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;because&lt;/span&gt; a blank value can serve the same purpose with less code. Dates are the one place I can't use a blank value and it must be null. I will show the use of both strings and dates so you can easily see how they differ.&lt;br /&gt;&lt;br /&gt;Here is how I grab values from a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;DataRow&lt;/span&gt; object called row:&lt;br /&gt;&lt;br /&gt;dim name as string = row("Name").&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;ToString&lt;/span&gt;()&lt;br /&gt;dim DOB as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Nullable&lt;/span&gt;(Of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;DateTime&lt;/span&gt;) = row.Field(Of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Nullable&lt;/span&gt;(Of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;DateTime&lt;/span&gt;))("DOB")&lt;br /&gt;&lt;br /&gt;My use of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;ToString&lt;/span&gt;() is a quick way to convert &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;DBNull&lt;/span&gt; strings into a empty string. I could store my date as a string and do the same thing, but there are times I want to keep it as a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;datetime&lt;/span&gt; object. I could use a plain &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;DateTime&lt;/span&gt; and just check the value as I read it for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;DBNull&lt;/span&gt; and adjust to that. Or I can use a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Nullable&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;DateTime&lt;/span&gt; object to do the same thing for me.&lt;br /&gt;&lt;br /&gt;When I am saving the values, I do check for values when I add them as Parameters. Here is how that code looks like:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dim command As New &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;SqlClient&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;SqlCommand&lt;/span&gt;()&lt;br /&gt;&lt;br /&gt;command.Parameters.AddWithValue("@Name", Name)&lt;br /&gt;If DOB Is Nothing Then&lt;br /&gt;command.Parameters.AddWithValue("@DOB", &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;DBNull&lt;/span&gt;.Value)&lt;br /&gt;Else&lt;br /&gt;command.Parameters.AddWithValue("@DOB", DOB)&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;One other thing that you need to watch is using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;DBNull&lt;/span&gt; values in a where statement. By default &lt;strong&gt;NULL=NULL &lt;/strong&gt;is false. You have to check for &lt;strong&gt;IS NULL &lt;/strong&gt;instead. If you want more details on why that is look up ANSI_NULLS. I mention this because its very common to want to use a parameter in a WHERE statement. If you &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_22"&gt;don't&lt;/span&gt; craft it correctly, you will not get the results you expect when the value is NULL.&lt;br /&gt;&lt;br /&gt;In your mind you expect this to work:&lt;br /&gt;&lt;br /&gt;SELECT * FROM people WHERE DOB = @DOB&lt;br /&gt;&lt;br /&gt;You want to use a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;DBNULL&lt;/span&gt; to find all the people without a DOB but it will return 0 records. I bet you could mess with the ANSI_NULL option or change the query to this:&lt;br /&gt;&lt;br /&gt;SELECT * FROM people WHERE (DOB = @DOB OR (@DOB IS NULL AND DOB IS NULL))&lt;br /&gt;&lt;br /&gt;This will do the normal check on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;param&lt;/span&gt;, but will also check to see if both are null. I know I am doing &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;a lot&lt;/span&gt; of extra work someplace, but this does work for me. Turning off the ANSI_NULL option will make the first query work, but I have not looked into it &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_26"&gt;enough&lt;/span&gt; to know if it has any &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_27"&gt;negative&lt;/span&gt; effects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-5369879395784125241?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/5369879395784125241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=5369879395784125241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/5369879395784125241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/5369879395784125241'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/03/vb-dates-and-dbnullvalue-sql.html' title='VB Dates and DBNull.Value SQL'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-7612088201073031967</id><published>2009-03-11T17:29:00.003-05:00</published><updated>2009-03-11T17:57:01.344-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Servers'/><title type='text'>New transaction cannot enlist in the specified transaction coordinator</title><content type='html'>I was tying to set up a special feature in the software I work with that involved linked servers.  This was  test setup so I configured some SQL servers I already had set up and ran into this error.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[OLE/DB provider returned message: New transaction cannot enlist in the specified transaction coordinator. ]&lt;br /&gt;OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].&lt;br /&gt;Msg 7391, Level 16, State 1, Line 2&lt;br /&gt;The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The only message the application gave me was the first line but I uncovered a sql command that let me test it without the overhead of running my application.  Here is that command:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;BEGIN DISTRIBUTED TRANSACTION&lt;br /&gt;select * from linkname.databasename.dbo.tablename&lt;br /&gt;COMMIT TRAN&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I was able to get the inner command to run on its own. As a distributed transaction, it would fail every time.&lt;br /&gt;&lt;br /&gt;I eventualy found this KB from microsoft to get me in the right direction.  &lt;a href="http://support.microsoft.com/kb/839279"&gt;http://support.microsoft.com/kb/839279&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/839279"&gt;You may receive a 7391 error message in SQL Server 2000 when you run a distributed transaction against a linked server after you install Windows Server 2003 or Windows XP Service Pack 2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It turned out to be a settings issue with the Microsoft Distributed Transation Cordinator (&lt;strong&gt;MS DTC&lt;/strong&gt;).  I had no idea what that realy was.  It turns out MS DTC should be enabled when SQL is installed but by default its locked down (or is with 2003/xp sp2).&lt;br /&gt;&lt;br /&gt;I used &lt;strong&gt;dcomcnfg&lt;/strong&gt; to get to the component services.  Console Root -&gt; Component Services -&gt; Computers -&gt; My computer -&gt; Properties .  On the Default properties &lt;strong&gt;enable distributed COM&lt;/strong&gt; on the computer.  Under MSDTC -&gt; Security Configuration check the option for &lt;strong&gt;Network DTC Access&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;I did make those changes on both servers, I don't know if that was needed or not.  I did the linked server last and it worked as soon as I applied the changes.  I know those were the exact changes I made on the 2nd server.  The first one prabably has every thing checked or opened up trying to figure it out.&lt;br /&gt;&lt;br /&gt;Other thing you may try if having issues it to make sure the Distributed Transaction Coordinator is running as &lt;strong&gt;network service&lt;/strong&gt; and not local system.  Reinstalling it as a service and &lt;strong&gt;rebooting&lt;/strong&gt; were a few other tips I read while trouble shooting this problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-7612088201073031967?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/7612088201073031967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=7612088201073031967' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7612088201073031967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7612088201073031967'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/03/new-transaction-cannot-enlist-in.html' title='New transaction cannot enlist in the specified transaction coordinator'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-8998572532558806901</id><published>2009-02-12T08:56:00.001-06:00</published><updated>2009-02-12T08:56:00.949-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Servers'/><title type='text'>Single Level Active Directory Domain</title><content type='html'>If you are considering giving your Active Directory name just a single level name, &lt;strong&gt;don't do it.&lt;/strong&gt;  Just stop and pick a new name.  If your already stuck with a single level AD domain, I feel your pain.  I see the warning now when I try to fix my problems after the fact.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;So whats the big deal?&lt;/strong&gt;  Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;XP&lt;/span&gt; and Server 2003 do not update &lt;span style="BACKGROUND-COLOR: #ffff00"&gt;DNS&lt;/span&gt; records to a single level domain.  They also have issues joining a domain cross &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;subnet&lt;/span&gt;.  Our &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;biggest&lt;/span&gt; problems show up when dealing with more then one &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;subnet&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;The main problem is that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;DNS&lt;/span&gt; will be missing records.  &lt;strong&gt;Domain &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;controllers&lt;/span&gt; have lots of integration with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;DNS&lt;/span&gt;&lt;/strong&gt;.  So if one of those is not updating its &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;DNS&lt;/span&gt; records, you have a huge mess.  Domain &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;controllers&lt;/span&gt; failing to replicate was our big issue.  Every time we added a domain &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;controller&lt;/span&gt;, we ended up rebuilding the &lt;span style="BACKGROUND-COLOR: #ffff00"&gt;DNS&lt;/span&gt; records by hand.  Adding the new server keys where needed.  Most of the time replication would work one way but not the other.  Fixing &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;DNS&lt;/span&gt; fixed replication.&lt;br /&gt;&lt;br /&gt;Over time I have uncovered more documentation and most importantly this registry key:&lt;br /&gt;[&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;HKEY&lt;/span&gt;_LOCAL_MACHINE\SYSTEM\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;CurrentControlSet&lt;/span&gt;\Services\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Dnscache&lt;/span&gt;\Parameters]"&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;UpdateTopLevelDomainZones&lt;/span&gt;"=&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;dword&lt;/span&gt;:00000001&lt;br /&gt;&lt;br /&gt;I run this on every server just to make sure.  Once you run this, you will have to reboot the server so the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;netlogon&lt;/span&gt; process can register the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;DNS&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;You can run this on your workstations if you want them in your DNS too.  we opted not to for most of ours.&lt;br /&gt;&lt;br /&gt;I &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_21"&gt;believe&lt;/span&gt; there is now  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;a group&lt;/span&gt; policy setting that sets the same value.  But I do not recall where it is. If I find it, I will update this post.&lt;br /&gt;&lt;br /&gt;The second big issue we ran into was we &lt;strong&gt;could not join the domain from the other &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;subnets&lt;/span&gt;&lt;/strong&gt;.  In &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;XP&lt;/span&gt; and 2003, Microsoft changed them to use &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;DNS &lt;/span&gt;more.  The computer could see the domain and tell you that it exists.   It would even point out that the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;SRV&lt;/span&gt; records in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;DNS &lt;/span&gt;are correct.  But it would fail to join.  At some point in the process it sees the single level domain name and used &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;netbios&lt;/span&gt; instead of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;DNS&lt;/span&gt;.   It would work fine if on the same &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;subnet&lt;/span&gt;, but with out a wins server or &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;lmhost&lt;/span&gt; file it would fail. &lt;br /&gt;&lt;br /&gt;For the longest time, we used a &lt;strong&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;lmhost&lt;/span&gt;&lt;/strong&gt; file to point to the domain.  We built it into the default ghost image and it worked great.  Then came the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_33"&gt;network&lt;/span&gt; restructure that ended up changing our &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;IP&lt;/span&gt; range.  Evey one of those file we used in the last several years had to be updated.   The symptom was a 10 min &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;login&lt;/span&gt; on those computers for existing users on the computer.&lt;br /&gt;&lt;br /&gt;Here is a sample of what we put in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;lmhost&lt;/span&gt; file&lt;br /&gt;&lt;br /&gt;10.0.0.1  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;servername&lt;/span&gt;1 #&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;PRE&lt;/span&gt; #DOM:&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;doaminname&lt;/span&gt;&lt;br /&gt;10.0.0.2  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;servername&lt;/span&gt;2 #&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;PRE&lt;/span&gt; #DOM:&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;domainname&lt;/span&gt;&lt;br /&gt;10.0.0.1  "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;domainname&lt;/span&gt;    \0x1b" #&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;PRE&lt;/span&gt;&lt;br /&gt;10.0.0.2  "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;domainname&lt;/span&gt;    \0x1b" #&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;PRE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Inside the quotes on the bottom line must be &lt;strong&gt;exactly 20 characters&lt;/strong&gt; or it won't work.After saving the changes to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;LMHOSTS&lt;/span&gt; file you have to enable &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;NetBIOS&lt;/span&gt; over &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;TCP&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;IP&lt;/span&gt; and import &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;theLMHOSTS&lt;/span&gt; file.&lt;br /&gt;&lt;br /&gt;The correct way to do this would be to set up a wins server.  One experiment that I tried was to put one of the &lt;strong&gt;domain &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_52"&gt;controllers&lt;/span&gt; address as the wins server and it solved our import issue&lt;/strong&gt;.  The only thing we needed a wins server for was to join computers to the domain on a different &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;subnet&lt;/span&gt;.   By telling the computer that the domain &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_54"&gt;controller&lt;/span&gt; is the wins server, it was able to find it and import just fine.&lt;br /&gt;&lt;br /&gt;So our work &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_55"&gt;around&lt;/span&gt; was to run a registry hack on every server so they update &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;DNS &lt;/span&gt;and to put in a fake wins server address that points to our domain &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_57"&gt;controller&lt;/span&gt; for workstation importing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-8998572532558806901?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/8998572532558806901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=8998572532558806901' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/8998572532558806901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/8998572532558806901'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/02/single-level-active-directory-domain.html' title='Single Level Active Directory Domain'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-3548979678015014711</id><published>2009-02-08T20:40:00.001-06:00</published><updated>2009-02-08T20:40:00.886-06:00</updated><title type='text'>Ventrilo - Ranks and Mute/Queue Options</title><content type='html'>There are lots of reasons you may or may not want to give users their own accounts on your vent server. I use it to give me more control over a large group. Let me give you an example.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I play alot of World of Warcraft and our raid groups have 25 members. A few need to be able to talk all the time while others just talk all the time and don't stop. If you get alot of people telling everyone how to do something their special way, it just makes it more complicated for everyone else.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So I have a raid channel set up that mutes all guests to that channel. All guild members have an account so they can talk. New and random people to the group we keep silent. We want them to listen to our method. If they have a sugestion, they can send it silently to a raid leader in game to relay to the group. This option is in the channel options under "Disable Guest Account Transmitting". Checking this will keep all guests from broadcasting in that channel.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another thing you can do is give each member a rank and mute low ranked members in a channel. I experimented with this but it does not work as smooth as I would like it to work. Im taling about the voice mode on the channel. The default option is normal that allows all ranks to talk. The other 2 options are Queued and Muted. The each act a little different but will keep ranks under a set level from broadcasting.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Queued: This one will mute everyone else while someone is talking. So only one person can broadcast at a time. It uses the Transmit Rank Level to only allow set ranks to broadcast at all. The person that gets the mic keeps it until he stops broadcasting. Once he stops, the next new broadcast gets it. The catch is if someone starts to broadcast just before they last person has released his mic, they will stay muted. I don't like this setting because someone could think they are eaying something important, but because they never got the green light it never broadcasted. I feel like I have to watch vent on a 2nd monitor to use this. The exception here is if you only have one person that will ever talk in this setting. You can adjust this setting on the fly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-3548979678015014711?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/3548979678015014711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=3548979678015014711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/3548979678015014711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/3548979678015014711'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/02/ventrilo-ranks-and-mutequeue-options.html' title='Ventrilo - Ranks and Mute/Queue Options'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-5464166842079135075</id><published>2009-02-02T20:24:00.002-06:00</published><updated>2009-02-02T20:40:25.144-06:00</updated><title type='text'>Ventrilo - How to connect?</title><content type='html'>Ventrilo is a very popular voice chat program.  It is used with many games to cordinate the actions of many players at once.  The first step to using Vent is to get connected.&lt;br /&gt;&lt;br /&gt;First step is to create a user name.  This is the name that everyone will see when you connect.  You can create a phonetic for it so it will announce when you join or leave the channel to everyone there (that have not turned that annoying feature off).  Be respectfull with that because it follows you from server to server and its easy to forget you have one set up.&lt;br /&gt;&lt;br /&gt;If its a new connection, you will need to add the server before you can connect to it.  You will usualy be provided a server/port/password to enter.  If they do not provide a password, you prabably do not need one.  &lt;br /&gt;&lt;br /&gt;The server can be a port or an IP address.  It can look like guild.typefrag.com or 10.120.34.4.  You may see the port number attached to the server name with a colin.  If the port number is 12345 its possible it can look like this; guild.typefrag.com:12345 or 10.120.34.4:12345.  If you are not given a port number, look closer at the sever name.&lt;br /&gt;&lt;br /&gt;Once you add the server you can click connect.  If everything is correct, you should find yourself in the root channel.  From here you can double click on a channel to join it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-5464166842079135075?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/5464166842079135075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=5464166842079135075' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/5464166842079135075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/5464166842079135075'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/02/ventrilo-how-to-connect.html' title='Ventrilo - How to connect?'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-1692119747776564336</id><published>2009-01-14T12:22:00.004-06:00</published><updated>2009-01-14T12:27:49.733-06:00</updated><title type='text'>Ventrilo Guide on its way</title><content type='html'>I am doing alot of work with Ventrilo and finding the information available on the features I wan't to use either don't exist or are hard to find. It's my plan to document some of these things to make it easier for others.&lt;br /&gt;&lt;br /&gt;For now check out this guide: &lt;a href="http://www.trap17.com/forums/Ventrilo-Gamers-Friends-t61530.html"&gt;http://www.trap17.com/forums/Ventrilo-Gamers-Friends-t61530.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-1692119747776564336?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/1692119747776564336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=1692119747776564336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1692119747776564336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1692119747776564336'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2009/01/ventrilo-guide-on-its-way.html' title='Ventrilo Guide on its way'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-823346192272689610</id><published>2008-12-02T09:40:00.003-06:00</published><updated>2008-12-02T10:51:13.499-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>KTT: Damage Meter AoC Combat Log Processing</title><content type='html'>I wrote little mod to track damage stats for Age of Conan when I first started playing it.  There was another damage meter at the time, but it didn't have the look and feel that I wanted.  Over time I added more and more features and started several others.  In the end I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;stoped&lt;/span&gt; playing Age of Conan and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;stoped&lt;/span&gt; maintaining the mod.&lt;br /&gt;&lt;br /&gt;My core features were stable on my last release and I have &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;watched&lt;/span&gt; it from a distance as people continue to download it.  I can't it does not have bugs and many of my newer features are more proof of concept that show what can be done. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How did I gather &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;dps&lt;/span&gt; stats?&lt;/strong&gt;&lt;br /&gt;The first big roadblock was the fact that Age of Conan did not have true mod support.  It did however have a feature I could use to my advantage.  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;AoC&lt;/span&gt; would generate a plain text file in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;realtime&lt;/span&gt; that contained the combat log.  Every attack, heal, buff, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;debuff&lt;/span&gt;, and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;xp&lt;/span&gt; gain was recorded in that file.   That one feature gave me a world of options and features that could be implemented.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Getting the correct file:&lt;/strong&gt;&lt;br /&gt;The log file was located in a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;sub folder&lt;/span&gt; within the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;AoC&lt;/span&gt; directory.  During install, a registry key is set to the install path of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;AoC&lt;/span&gt;.  The logs were named in such a way that an alpha sort would get me to the correct &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;ime&lt;/span&gt;.  On first scan of the directory, I grab the logical file and set a marker to the end of it.  I start at the end of the file to exclude old stats.  I assume that starting &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;KTT&lt;/span&gt; is when stat collection should start.  &lt;br /&gt;&lt;br /&gt;I also add a watch on the folder for new files getting created.  There are times when &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;KTT&lt;/span&gt; will be running already before the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;logfile&lt;/span&gt; gets created.  If I did not watch for new files it would be stuck on the old one and never collect any stats.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Processing the log:&lt;/strong&gt;&lt;br /&gt;Twice a second I reopen that file.  From the marker to the end of the file, I add every plain text line into a queue.  The marker is updated with the end of file and the file is closed.   I had to open the file in a read only non locking stream so it did not cause issues with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;AoC&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;writing&lt;/span&gt; to that same file.  I used the queue so I could collect the data as fast as possible and get that file closed as fast as possible.&lt;br /&gt;&lt;br /&gt;I would then work that queue with regular &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_17"&gt;expression&lt;/span&gt; to pull out the various values and actions.  I ended up with a fairly complicated &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;regex&lt;/span&gt; query that did most of the work for me.  I found 4 distinct sentence structures that indicate source, target, action, and a value.  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;AoC&lt;/span&gt; made the combat log in sentences that were proper &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_20"&gt;English&lt;/span&gt; that even reflected 2&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;nd&lt;/span&gt; person when needed.  While it sounds nice when read out loud, it creates &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;a lot&lt;/span&gt; more work when &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_23"&gt;writing&lt;/span&gt; a parser.   So the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;regex&lt;/span&gt; ended up to be 4 page widths long but I didn't have to post process any of the values.&lt;br /&gt;&lt;br /&gt;Once each line was processed into an action object, it was then placed on another queue.   I used a queue her so I could multi thread the log reading/parsing away from the rest of the application.  As I work this queue I would pass the object off to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;plugin&lt;/span&gt; framework.  The damage meter &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;plugin&lt;/span&gt; would flatten that stats as it received them.  When calculating total damage, I just add the damage on the fly so the reporting side can just report the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;precalculated&lt;/span&gt; total. (vs summing the damage every time I want to report it).  I did this for any stat that I could think of.&lt;br /&gt;&lt;br /&gt;Because I &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_28"&gt;compressed&lt;/span&gt; the stats like this, I could keep the queue clear of actions.  The point of this is my memory &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_29"&gt;usage&lt;/span&gt; is only as wide as the number of stats I'm recording and not as large as the log file.   During a large raid, the log file can grow to very large sizes very quickly.  While &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;KTT&lt;/span&gt; will jump in size very quickly as it sees a stat for the first time,  as that stat is repeated over and over many times in the log, it will not take much &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_31"&gt;additional&lt;/span&gt; memory.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;In closing:&lt;/strong&gt;&lt;br /&gt;I may do little write ups on other features of my mod (or its potential) later.  I wrote this for other mod writers.  To show them that with very simple things and ideas you can do some very cool things.   While I may not have described the best way to do something,  it still worked very well for me.  The mod is listed as &lt;a href="http://aoc.curse.com/downloads/aoc-addons/details/kevmartoolkit.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;KTT&lt;/span&gt; Damage Meter, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;KoS&lt;/span&gt;, Timers, &amp;amp; Sounds&lt;/a&gt; over at curse.com.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-823346192272689610?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/823346192272689610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=823346192272689610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/823346192272689610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/823346192272689610'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2008/12/ktt-damage-meter-aoc-combat-log.html' title='KTT: Damage Meter AoC Combat Log Processing'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-8343110473921651222</id><published>2008-11-17T10:14:00.006-06:00</published><updated>2008-11-17T10:48:24.184-06:00</updated><title type='text'>Antivirus 2009 Protection Scam pro-scan-online</title><content type='html'>&lt;strong&gt;Antivirus 2009 Protection Scam&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5269666611457955010" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_qSwZBmiV5rY/SSGd3PywFMI/AAAAAAAAACs/PDzb7WqJh_s/s320/popup.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;I was on my work machine and I received this pop up warning me about spyware. This kind of shocked me because the sites I visit at work are few and are work related. Not the type of sites that usualy have this type of advertising. Now that I think about it, I may know the site. If I am right, its a 3rd party add doing it so any site you trust could be doing it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5269667210426683442" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 311px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_qSwZBmiV5rY/SSGeaHIBkDI/AAAAAAAAAC0/IcZt_4qpLhY/s400/FalseReport.PNG" border="0" /&gt;&lt;br /&gt;I run several monitors and could see a session of IE running as small as it possibly could off to the right. A place that would be off screen for most people. Once I closed the pop up message, I saw it open a full window page that did a fake scan of my system. It indicated that several errors were found and even gave the names of a few viruses. As an IT security professional, I know how to keep my system clean and knew the report that it gave me was staged and false.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5269667688487278082" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 324px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_qSwZBmiV5rY/SSGe18CjVgI/AAAAAAAAAC8/Qs11XfOlLeI/s400/home.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;Clicking anywhere within the window (like the fake red X or cancel button) started downloading a file. On older web browsers it prabably would have just ran the program, but my version of IE gave me the option. You can either save it or run it. I pray that none of you ran it. Don't even save it. Your best bet is to close IE and end your session. Then log off or reboot.&lt;br /&gt;&lt;br /&gt;I did not get infected by it, but I can easily see how the average person would. I work in IT and have a good eye for stuff like this. I also know the average user and this prays on them. I also know several people that have gotten trapped by this. I included some screen shots from the site and a few links where people were talking about it.&lt;br /&gt;&lt;br /&gt;The URL for me was pro-scan-online.com but with a scam like this, I expect them to have lots of different sites set up. The file name was A9installertest_77024202.exe.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Here are some other people running into this same thing:&lt;/p&gt;&lt;p&gt;&lt;a href="http://forums.vnunet.com/thread.jspa?threadID=146114"&gt;http://forums.vnunet.com/thread.jspa?threadID=146114&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://forum.joomla.org/viewtopic.php?f=267&amp;amp;p=1484262"&gt;http://forum.joomla.org/viewtopic.php?f=267&amp;amp;p=1484262&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://loscompanion.com/forums/index.php?topic=5473.0"&gt;http://loscompanion.com/forums/index.php?topic=5473.0&lt;/a&gt;&lt;/p&gt;&lt;p&gt;From reading a bit, its called the A9 Installer virus.  I think its more crapware than a virus, either way avoid it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-8343110473921651222?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/8343110473921651222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=8343110473921651222' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/8343110473921651222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/8343110473921651222'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2008/11/antivirus-2009-protection-scam-pro-scan.html' title='Antivirus 2009 Protection Scam pro-scan-online'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_qSwZBmiV5rY/SSGd3PywFMI/AAAAAAAAACs/PDzb7WqJh_s/s72-c/popup.JPG' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-1395692234165716395</id><published>2008-04-13T17:05:00.004-05:00</published><updated>2008-04-17T07:03:23.116-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Windows cannot install required files. Make sure all files required for installation are available, and restart the installation. Error code: 0x800703</title><content type='html'>I just built a new computer and ran into some issues installing Microsoft Windows Vista. I was getting this message: &lt;strong&gt;“Windows cannot install required files. Make sure all files required for installation are available, and restart the installation. Error code: 0x800703E6”&lt;/strong&gt;. I would get past all the install windows and even copy all the files. It was the expanding files part that would fail.&lt;br /&gt;&lt;br /&gt;My first guess was to remove a stick of ram. I have heard that before and I was at 4G with the 2 sticks. That did not help this time. I ran the memory tests and everything was ok. I left that second stick out while doing the rest of my tests.&lt;br /&gt;&lt;br /&gt;I looked for the error code and I found a KB article (&lt;a href="http://support.microsoft.com/kb/930984/en-us"&gt;KB930984&lt;/a&gt;) that described my exact problem. It indicated that my firmware on my DVD drive was causing the issue. Either update the firmware or copy the files to the disk. I copied all the files to my C: and rebooted. I let it boot from the hard drive and ran into the same issue. I saw another site suggest that the DVD drive needed to be the slave on the IDE cable. Changing the jumper didn’t fix that either. I disconnected the DVD drive and the installer required that I had one.&lt;br /&gt;&lt;br /&gt;I thought that was odd. I had an old DVD drive that windows would see but could not see any disk inserted. I set it up and started the install over. It still complained about the DVD drive. After placing a copy of all the files and the main disk and booting from it, the install would still look for the install files on the DVD. I still had the install disk in the drive during some of my tests. That would explain me still getting the error when I thought I had ruled the DVD drive out.&lt;br /&gt;&lt;br /&gt;After some more searching, I found the solution. &lt;a href="http://11011.net/archives/000673.html"&gt;Installing Vista from Hard Disk, USB Disk or Memory Stick&lt;/a&gt;. I selected the repair option instead of install after reading that. Ignored the drive selection and started the command prompt. I ran the fallowing commands:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;c:&lt;br /&gt;cd /boot&lt;br /&gt;del bcd&lt;br /&gt;bcdedit /createstore&lt;br /&gt;cd ../sources&lt;br /&gt;setup&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The install went smooth after that. After the install finished, I reformated and installed Vista 64 bit. I was using my 32 bit disk because its a known good one. I was having issues so I wanted to eliminate variables as much as I could.&lt;br /&gt;&lt;br /&gt;I copied all the CD files to the C: again but it failed to boot. I booted to the DVD but droped to a command line and ran the install off the hard disk. I did not have any other issues with the rest of the install. I even did that last install with both sticks of ram.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-1395692234165716395?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/1395692234165716395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=1395692234165716395' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1395692234165716395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1395692234165716395'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2008/04/windows-cannot-install-required-files.html' title='Windows cannot install required files. Make sure all files required for installation are available, and restart the installation. Error code: 0x800703'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-2177748386332972609</id><published>2008-04-13T08:57:00.003-05:00</published><updated>2008-04-13T09:09:16.658-05:00</updated><title type='text'>BIOSTAR TForce TP35D2-A7 with Intel Core 2 Duo E8400 requires bios update</title><content type='html'>TP35D2-A7 needs bios update before it can use an E8400.  I just purchased this combo. I could not find any clear details if the CPU and motherboard would work together.  Several user reviews on newegg.com and posts on some over clocking boards indicated they work with each other.  When I powered up my machine for the first time I discovered they don't work out of the box.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.kqzyfj.com/click-2954071-10440897?url=http%3A%2F%2Fwww.newegg.com%2FProduct%2FProduct.aspx%3FItem%3DN82E16819115037%26ATT%3D19-115-037%26CMP%3DAFC-C8Junction%26nm_mc%3DAFC-C8Junction%26cm_mmc%3DAFC-C8Junction-_-Processors-_-intel-_-19115037&amp;cjsku=N82E16819115037"&gt;Intel Core 2 Duo E8400 Wolfdale 3.0GHz 6MB L2 Cache LGA 775 65W Dual-Core Processor&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.kqzyfj.com/click-2954071-10440897?url=http%3A%2F%2Fwww.newegg.com%2FProduct%2FProduct.aspx%3FItem%3DN82E16813138075&amp;cjsku=N82E16813138075"&gt;BIOSTAR TForce TP35D2-A7 LGA 775 Intel P35 ATX Intel Motherboard&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The power supply would turn on, all my fans would spin up, and then they would all spin down.  Power would recycle and it did the same thing over and over.  I looked to the manual for the TP35D2-A7 and it indicated 2 LED status lights were on the board.  Neither one lit up and that indicated unusual mother board or CPU issue.  In the over clocking section of the manual it indicated the power would cycle like I was seeing when clock settings did not work with the CPU.  &lt;br /&gt;&lt;br /&gt;I was reading on the &lt;a href="http://www.biostar.com.tw/app/en-us/t-series/cpu_support.php?S_ID=286"&gt;Biostar page &lt;/a&gt;and it does not list the E8400 as a supported processor.  In the &lt;a href="http://www.biostar.com.tw/app/en-us/support/faq.php?S_ID=375"&gt;FAQ&lt;/a&gt; they had a question on &lt;a href="http://www.biostar.com.tw/app/en-us/event/IntelAMDAM2/45nm.html"&gt;support for the 45nm processors &lt;/a&gt;and it indicated a bios update was needed.  I saw this before I made my purchase.  When I ran into this issue, I expected that I needed to do a bios update.  The catch is if you need a supported processor installed to update the bios.  If this was my first build and all I had was the E8400, I would have been dead in the water. That was my situation.&lt;br /&gt;&lt;br /&gt;I work in an IT department so I took my computer in with me the next day.  I used a processor from a work machine to get it to boot up and flashed the bios.  I placed the E8400 back into the mother board and it booted up without issue.&lt;br /&gt;&lt;br /&gt;To sum it up, you will need a bios update for TP35D2-A7 if you are going to use an E8400 with it and you need a working processor to update the bios.  I was using the E8400 but the same should hold true for the E8200.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-2177748386332972609?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/2177748386332972609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=2177748386332972609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/2177748386332972609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/2177748386332972609'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2008/04/biostar-tforce-tp35d2-a7-with-intel.html' title='BIOSTAR TForce TP35D2-A7 with Intel Core 2 Duo E8400 requires bios update'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-1961496083750789367</id><published>2008-03-29T15:07:00.003-05:00</published><updated>2008-03-29T16:13:45.503-05:00</updated><title type='text'>Tortage: Age of Conan Database</title><content type='html'>&lt;a href="http://www.tortage.com"&gt;Tortage Age of Conan Database and Reference Site &lt;/a&gt; is my next project. I am looking to build a item and quest database for &lt;a href="http://www.ageofconan.com/"&gt;Age of Conan&lt;/a&gt;. Age of Conan is a new MMORPG that will be released shortly. I was a &lt;a href="http://www.worldofwarcraft.com"&gt;World of Warcraft&lt;/a&gt; player and I used sites like that all the time.&lt;br /&gt;&lt;br /&gt;At this point the game does not support mods. Once they add that ability I believe I can write some data mining mods from inside the game that will automate the process. I bet I can data mine it from the back end, but its so much easier when the program makes the API calls available to you. The advantage the in game mod can provide is location tracking when they pick something up or complete a quest.&lt;br /&gt;&lt;br /&gt;Until the support for mods is available I will work on other related projects. One of my first ones is a talent calculator. Someone makes one for every game. This time it may as well be me.&lt;br /&gt;&lt;br /&gt;Work has already started. I have purchased the domain name &lt;a href="http://www.tortage.com"&gt;tortage.com&lt;/a&gt; and have a server up an going. A place holder page is in place so search engines can start indexing it. The server is a low end Linux box at the moment. When it starts to generate traffic, I plan to find a good host. I would rather save the cost of hosting it for now.&lt;br /&gt;&lt;br /&gt;Some of you are asking why the name &lt;a href="http://www.tortage.com"&gt;Tortage&lt;/a&gt;. &lt;a href="http://www.tortage.com"&gt;Tortage&lt;/a&gt; is the starting are in Age of Conan. Your first 1-20 levels in AOC are spent in that area. It the place where you are introduced to the game and given the information you need to get started. That's the same idea behind the website.&lt;br /&gt;&lt;br /&gt;*DNS setting are still getting adjusted, so its possible the site will be dark for the next few days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-1961496083750789367?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/1961496083750789367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=1961496083750789367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1961496083750789367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1961496083750789367'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2008/03/tortage-age-of-conan-database.html' title='Tortage: Age of Conan Database'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-7455545078333818001</id><published>2008-03-25T16:06:00.002-05:00</published><updated>2008-03-25T16:19:40.389-05:00</updated><title type='text'>Internal error occurred on the report server. See the error log for more details. rsInternalError Get Online Help EXECUTE permission denied on object</title><content type='html'>I was working with SQL Server Reporting Services subscription and ran into this error:&lt;br /&gt;&lt;strong&gt;An internal error occurred on the report server. See the error log for more details. (rsInternalError) Get Online Help EXECUTE permission denied on object 'sp_verify_job_identifiers', database 'msdb', schema 'dbo'.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It looks like a permissions issue.  After some searching on the error I found a post over at &lt;a href="http://karimmohamed.spaces.live.com/blog/cns!81C4EE2B88262802!446.entry"&gt;Karim's Blog&lt;/a&gt; with the solution.  He provided the a script that adds execute permissions to several objects in the database. &lt;br /&gt;&lt;br /&gt;Here is his script:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;USE master&lt;br /&gt;GO&lt;br /&gt;GRANT EXECUTE ON master.dbo.xp_sqlagent_notify TO RSExecRole&lt;br /&gt;GO&lt;br /&gt;GRANT EXECUTE ON master.dbo.xp_sqlagent_enum_jobs TO RSExecRole&lt;br /&gt;GO&lt;br /&gt;GRANT EXECUTE ON master.dbo.xp_sqlagent_is_starting TO RSExecRole&lt;br /&gt;GO&lt;br /&gt;USE msdb&lt;br /&gt;GO&lt;br /&gt;-- Permissions for SQL Agent SP's&lt;br /&gt;GRANT EXECUTE ON msdb.dbo.sp_help_category TO RSExecRole&lt;br /&gt;GO&lt;br /&gt;GRANT EXECUTE ON msdb.dbo.sp_add_category TO RSExecRole&lt;br /&gt;GO&lt;br /&gt;GRANT EXECUTE ON msdb.dbo.sp_add_job TO RSExecRole&lt;br /&gt;GO&lt;br /&gt;GRANT EXECUTE ON msdb.dbo.sp_add_jobserver TO RSExecRole&lt;br /&gt;GO&lt;br /&gt;GRANT EXECUTE ON msdb.dbo.sp_add_jobstep TO RSExecRole&lt;br /&gt;GO&lt;br /&gt;GRANT EXECUTE ON msdb.dbo.sp_add_jobschedule TO RSExecRole&lt;br /&gt;GO&lt;br /&gt;GRANT EXECUTE ON msdb.dbo.sp_help_job TO RSExecRole&lt;br /&gt;GO&lt;br /&gt;GRANT EXECUTE ON msdb.dbo.sp_delete_job TO RSExecRole&lt;br /&gt;GO&lt;br /&gt;GRANT EXECUTE ON msdb.dbo.sp_help_jobschedule TO RSExecRole&lt;br /&gt;GO&lt;br /&gt;GRANT EXECUTE ON msdb.dbo.sp_verify_job_identifiers TO RSExecRole&lt;br /&gt;GO&lt;br /&gt;GRANT SELECT ON msdb.dbo.sysjobs TO RSExecRole&lt;br /&gt;GO&lt;br /&gt;GRANT SELECT ON msdb.dbo.syscategories TO RSExecRole&lt;br /&gt;GO&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-7455545078333818001?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/7455545078333818001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=7455545078333818001' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7455545078333818001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7455545078333818001'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2008/03/internal-error-occurred-on-report.html' title='Internal error occurred on the report server. See the error log for more details. rsInternalError Get Online Help EXECUTE permission denied on object'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-5942448849957851610</id><published>2008-02-23T22:14:00.002-06:00</published><updated>2008-02-23T23:02:26.508-06:00</updated><title type='text'>Custom RDP Solution Part 3 (RDX)</title><content type='html'>Here is an update on my custom &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;rdp&lt;/span&gt; solution.&lt;br /&gt;&lt;br /&gt;Initial testing only uncovered minor issues.  After those were resolved we deployed it to a few of our users that connect to all of our terminal servers.  I am using it when I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;VPN&lt;/span&gt; into my work machine.  Several high &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;traffic&lt;/span&gt; machines were secretly changed over.  Not only was the change over smooth, the users had no issues with it.&lt;br /&gt;&lt;br /&gt;We are ready for production.  As we rebuild or deploy new machines, my new client goes out with them.  Once I have about 10% deployment &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;penetration&lt;/span&gt;, I plan on pushing it out domain wide with group policy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-5942448849957851610?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/5942448849957851610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=5942448849957851610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/5942448849957851610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/5942448849957851610'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2008/02/custom-rdp-solution-part-3-rdx.html' title='Custom RDP Solution Part 3 (RDX)'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-7843853787747551693</id><published>2008-01-24T00:38:00.001-06:00</published><updated>2008-01-24T00:38:14.065-06:00</updated><title type='text'>Tweaking Vista</title><content type='html'>&lt;p&gt;I recently made the jump to Vista. I feel like I now have it tweaked and performing reasonably well.&amp;#160; I can sit here and type to the sound of my keyboard keys and not to the grinding of my hard drive.&amp;#160; Vista spent a lot of recourses just being vista and not doing anything useful.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I like to pull up task manager and see that CPU usage dance between 0% and 2% as I type this.&amp;#160; I have a little blog authoring tool open and IE displaying my last search behind me.&amp;#160; I also trimmed the memory usage down, but I cant get it anyplace close to XP or server 2003.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.google.com/kevmar/R5gySBpP2oI/AAAAAAAAABY/yfsbhxZ4CYU/taskmanager%5B14%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="taskmanager" src="http://lh6.google.com/kevmar/R5gyShpP2pI/AAAAAAAAABk/MRPr8rjUvH8/taskmanager_thumb%5B12%5D" width="321" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Most of my tweaking was done by disabling services to features that don't add any value.&amp;#160; I have disabled everything possible that does not impact my use of Vista.&amp;#160; I have some things enabled that I would remove if I did not VPN regularly.&amp;#160; Here is my list of running services that I felt are required for a stable functioning computer.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.google.com/kevmar/R5gyUxpP2qI/AAAAAAAAABs/fE7qMibefEM/Services%5B7%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="357" alt="Services" src="http://lh5.google.com/kevmar/R5gyVRpP2rI/AAAAAAAAAB0/w7W_Zk39KHU/Services_thumb%5B5%5D" width="569" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-7843853787747551693?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/7843853787747551693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=7843853787747551693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7843853787747551693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7843853787747551693'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2008/01/tweaking-vista.html' title='Tweaking Vista'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-8245107790248430026</id><published>2008-01-16T21:52:00.000-06:00</published><updated>2008-01-17T13:06:11.256-06:00</updated><title type='text'>get Outlook 2007 work with Lotus Domino server using DAMO</title><content type='html'>At my place of work the email system is lotus notes. The lotus domino server was set up with fairly open access for the longest time. We could use any client we wanted if we knew how to configure it. A while ago they took steps to secure it and closed off POP3 and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;IMAPI&lt;/span&gt; access.&lt;br /&gt;&lt;br /&gt;That left us with having to use only Lotus Notes. For Outlook 2003 I was able to use &lt;a href="http://www.microsoft.com/Downloads/details.aspx?FamilyID=8ebbba59-5f17-4e52-8980-c4f0dfa92d65&amp;amp;displaylang=en"&gt;Outlook 2003/2002 Add-in: Notes Connector&lt;/a&gt; from Microsoft. When Outlook 2007 was released, Microsoft never updated that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;addon&lt;/span&gt;. IBM also did the exact same thing. The IBM &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;addon&lt;/span&gt; is called &lt;a href="http://www.ibm.com/developerworks/lotus/library/damo/"&gt;Domino Access for Microsoft Outlook&lt;/a&gt; . After some digging, I was able to get the IBM &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;DAMO&lt;/span&gt; connector to work with Outlook 2007.&lt;br /&gt;&lt;br /&gt;The first question is &lt;strong&gt;where do I find or download the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;DAMO&lt;/span&gt;?&lt;/strong&gt; The simple answer is that you get it from your server administrator. You cannot download it as an individual component. You have to install a copy of the Lotus Domino server to get the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;DAMO&lt;/span&gt; installer. I have no clue why IBM does not provide it as a standalone download. I also do not see it hosted anyplace else. I am reluctant to host it myself because of that.&lt;br /&gt;&lt;br /&gt;So &lt;strong&gt;to get your hands on it&lt;/strong&gt; yourself you will have to download a trial copy of Lotus Domino 8 (or whatever the current trial is) from the &lt;a href="http://www.ibm.com/developerworks/lotus/downloads/"&gt;Lotus downloads page&lt;/a&gt;. This does require registration, but its fairly painless. When you do the install, you can deselect everything except &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;DAMO&lt;/span&gt;. I somehow lost the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;DAMO&lt;/span&gt; installer when I tried it, but was able to do a computer search to find it.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://www-10.lotus.com/ldd/nd6forum.nsf/DateAllWithExcerptweb/6cc03a0bb49ea3f8852573140050eda7?OpenDocument"&gt;Once you do the install&lt;/a&gt;&lt;/strong&gt;, you must add the install location (%&lt;strong&gt;ProgramFiles%\DominoForOutlook&lt;/strong&gt;) to your Path variable in environmental variables. Make sure that all other lotus locations in that path variable are after the one you just added. I did see a registry key to check. Mine was set to the correct value by default.&lt;br /&gt;computer\hkey_current_user\software\microsoft\office\outlook\addins\inotesoutlookaddin.addin&lt;br /&gt;Change LoadBehavior to 3.&lt;br /&gt;&lt;br /&gt;The next issue you will run into is &lt;strong&gt;missing emails or messages&lt;/strong&gt; that don't replicate into outlook. By default, you will only see the last 90 days of messages and will be limited to 200M of email. In the Outlook tools -&gt; options -&gt; Domino Preferences you will find a replication section. Bump it up to 365 days and 1600M. Then close out of Outlook and reopen it. Once it finishes replication, go back in and lower the number of days in those options. If you leave the number at 1 year &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;replication&lt;/span&gt; will be slower day to day.&lt;br /&gt;&lt;br /&gt;So far it has worked very well. I am still looking into an issue where a message with a corrupt message body does not show up in Outlook but does in Lotus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-8245107790248430026?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/8245107790248430026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=8245107790248430026' title='42 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/8245107790248430026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/8245107790248430026'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2008/01/get-outlook-2007-work-with-lotus-domino.html' title='get Outlook 2007 work with Lotus Domino server using DAMO'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>42</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-8374713189975513845</id><published>2008-01-13T16:51:00.001-06:00</published><updated>2008-01-13T16:51:43.381-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='Wii'/><title type='text'>MySims load times are killing me</title><content type='html'>&lt;p&gt;I recently got a Wii and now have MySims.&amp;#160; I kind of like how I can use the blueprints and just crank out things, but have the option of freedom.&amp;#160; &lt;/p&gt;  &lt;p&gt;I like being able to make some very creative items.&lt;/p&gt;  &lt;p&gt;At the same time, the amount of time spent loading everything is killing the game for me.&amp;#160; I can understand some loading.&amp;#160; Every time I enter a building or leave a building it has to load something.&amp;#160; I expect that loading.&lt;/p&gt;  &lt;p&gt;The place where it gets under my skin is the loading in the menu screens.&amp;#160; Every time you check your back pack, or tasks, or friends, or blue prints it has to load them.&amp;#160; These are simple heads up display items that you would expect to be very responsive.&amp;#160; &lt;/p&gt;  &lt;p&gt;Not only does everything have to load every time the display changes, extra steps are added that cause more loading time.&lt;/p&gt;  &lt;p&gt;Here is an example.&amp;#160; If I want to build something, I have to go to my shop.&amp;#160; Before the shop loads, I am asked what I want to work on.&amp;#160; I make a choice and then have to wait for my shop to load.&amp;#160; Lets say I am done with that item and want to work on a second.&amp;#160; I have to leave the shop, wait for the world to load, enter the same shop I was just in, make my choice, and wait for the shop to load again.&lt;/p&gt;  &lt;p&gt;Several of the menu items force you back to the main menu requiring you to load the submenu again if you want to look at a different option.&lt;/p&gt;  &lt;p&gt;This is a good game.&amp;#160; But when I am working fast, I spend 1/3 of my game time looking at the loading screen.&amp;#160; I wish that was an exaggeration. &lt;/p&gt;  &lt;p&gt;I get the feeling the framework is too bloated and overused.&amp;#160; It sounds like other recent Sims games suffer in the same way.&amp;#160; I would hope they clean up there code base before reusing it in another project.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-8374713189975513845?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/8374713189975513845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=8374713189975513845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/8374713189975513845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/8374713189975513845'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2008/01/mysims-load-times-are-killing-me.html' title='MySims load times are killing me'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-8887404111297487760</id><published>2008-01-04T21:04:00.001-06:00</published><updated>2008-01-04T21:04:58.078-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughts'/><title type='text'>Why does windows live take so long to install?</title><content type='html'>&lt;p&gt;I saw Microsoft released a blog writing tool as a windows live app. I decided to try it at work and at home. The installer has one step where it checks for existing windows live apps.&amp;#160; It bothers me that Microsoft has a dozen or so apps, yet it spends a lot of time looking for them.&lt;/p&gt;  &lt;p&gt;It takes longer for the installer to look for those 12 apps than to do the rest of the install.&lt;/p&gt;  &lt;p&gt;I can only guess what they are looking for, but I suspect that step is just mislabeled.&amp;#160; Sometimes its the small details that give you uneasy feelings. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-8887404111297487760?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/8887404111297487760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=8887404111297487760' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/8887404111297487760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/8887404111297487760'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2008/01/why-does-windows-live-take-so-long-to.html' title='Why does windows live take so long to install?'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-4500952869707933851</id><published>2008-01-03T21:34:00.001-06:00</published><updated>2008-01-03T21:34:45.000-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='RDX'/><title type='text'>RDX Testing</title><content type='html'>&lt;p&gt;I am calling my custom RDP program CODTSC and using RDX as the file association. &lt;/p&gt;  &lt;p&gt;Initial development is complete and I have finished my personal testing.&amp;#160; I put together a deployment package for my coworkers.&amp;#160; We set up a sample RDX file with a special config tool that I also built for them.&lt;/p&gt;  &lt;p&gt;At the end of the day we deployed it to a single user that uses RDP to connect to 5 different sessions.&amp;#160; That user has RDP files provided for them.&amp;#160; In the morning I will see how seamless the deployment went once the user gets a chance to use it.&lt;/p&gt;  &lt;p&gt;Ideally this will work at least as good as mstsc and not introduce any new problems.&amp;#160; The user does not know we made the switch.&amp;#160; They will see it look a little different when connecting, but after that it should not change any thing for them.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-4500952869707933851?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/4500952869707933851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=4500952869707933851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/4500952869707933851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/4500952869707933851'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2008/01/rdx-testing.html' title='RDX Testing'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-9076922263941454603</id><published>2008-01-02T07:34:00.000-06:00</published><updated>2008-01-01T17:57:22.344-06:00</updated><title type='text'>Custom RDP Solution Part 2</title><content type='html'>I am looking to add single sign on type functionality to a custom RDP client that I am working on.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The bigest issue with this is the fact that single sign on is not supported. So I have to get creative to work around that limitation. I think with the use of web services and a little social engeneering on the part of app, I can recreate the effect.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At some point I will have to collect the password from the user and store it in a save place. Its not that hard to create a login screen that looks like the one they currently see. If the username matches the username they currently logged in with, Its save to save the password to the account. I would prabably encrypt it to a personal network share that every user has. This allows it to roam with them.&lt;br /&gt;&lt;br /&gt;The bigest issue is when the wrong password gets entered or its changed after its saved. I will need a process to verify the account information. When authentication fails when making a rdp connection, they user is prompted on the remote end for the correct information. My application can not tell from the conneciton if the details are correct or not.&lt;br /&gt;&lt;br /&gt;I am thinking about using a webservice that will serve as my authentication check. I know I can load my webservice request with login information I get from my user. So if it authenticates, the information is good.&lt;br /&gt;&lt;br /&gt;In the end, I think it will work. I might find a simpler solution than using a webservice. I might use it to create a central connection log of all rdp trafic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-9076922263941454603?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/9076922263941454603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=9076922263941454603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/9076922263941454603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/9076922263941454603'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2008/01/custom-rdp-solution-part-2.html' title='Custom RDP Solution Part 2'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-6383634056091903507</id><published>2007-12-30T06:55:00.000-06:00</published><updated>2007-12-29T23:24:19.418-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Custom RDP solution</title><content type='html'>In a previous post I covered several issues I ran into with the vista rdp client. I have a few more problems that have pushed me to write my own RDP client. Its more a wrapper around the ActiveX control so it will require RDP 6.0 (and .NET 2.0) to be installed. But it does solve my problems.&lt;br /&gt;&lt;br /&gt;Here are the features I want to include&lt;br /&gt;&lt;br /&gt;Disable close button&lt;br /&gt;Fix Windows key sticking&lt;br /&gt;Allow saved passwords inside RDP file&lt;br /&gt;Encrypted RDP files&lt;br /&gt;Custom title bar text&lt;br /&gt;Single sign on (v2)&lt;br /&gt;&lt;br /&gt;I have every feature working except the single sign on. I am going to bounce that feature to a later release, but I do have a solution worked out for it.&lt;br /&gt;&lt;br /&gt;My app can read any RDP file. I only implement a subset of the options, but I can use my existing RDP files. I did implement all the settings that we change. I also added a few new ones that control the new features I added. "disable close button:i:1" and "disable close button message:s:" are 2 examples of added settings.&lt;br /&gt;&lt;br /&gt;To disable the close button, I just catch the close event and display a customizable message if the connection is still active. The return them to the form. This solves the issue we have with open record locks on disconnected sessions from people clicking the X to close.&lt;br /&gt;&lt;br /&gt;The custom wrapper has the ability to read a password from the rdp file and use it in the connection. This allows me to publish shortcuts with generic usernames and passwords in them again.&lt;br /&gt;&lt;br /&gt;I use RDX extensions to indicate encrypted files. I use TripleDES to protect the files from user changes. I have places that I don't want people messing with the settings. Also good for when the password is saved in the file. A custom RDX file editor is provided to my technicians that would need to make changes to the files.&lt;br /&gt;&lt;br /&gt;And by default, the Windows key does not stick. That was a nice side effect.&lt;br /&gt;On deployment, I associate RDP and RDX run commands with my custom application. The icon is unchanged and my user experience does not change much.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-6383634056091903507?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/6383634056091903507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=6383634056091903507' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/6383634056091903507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/6383634056091903507'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/12/custom-rdp-solution.html' title='Custom RDP solution'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-1188210392648969111</id><published>2007-12-29T22:57:00.000-06:00</published><updated>2007-12-29T23:13:32.933-06:00</updated><title type='text'>Raise events on main form from different thread.</title><content type='html'>I just saw this post on &lt;a class="headermaintitle" id="bp___ctl00___bth___BlogTitle" href="http://blogs.msdn.com/nicold/default.aspx"&gt;Nicola Delfino's blog&lt;/a&gt;.  I run into this same thing that he provides the solution for. &lt;br /&gt;&lt;br /&gt;&lt;a id="bp___ctl00___RecentPosts___postlist___EntryItems_ctl00_PostTitle" href="http://blogs.msdn.com/nicold/archive/2007/12/29/update-winform-interface-from-a-different-thread.aspx"&gt;Update WinForm interface from a different thread&lt;/a&gt;&lt;br /&gt;Well, this is a typical issue when you have a thread that works (i.e. a Workflow) and a UI that needs to be updated.&lt;br /&gt;Let assume that you have a WinFom and you need to update its windows Title from another thread. The other thread needs to call "UpdateTitle" public method of current Form instance.&lt;br /&gt;In order to obtain that it works you need to implement "UpdateTitle". &lt;br /&gt;&lt;br /&gt;See his original post for the code sample:&lt;a id="bp___ctl00___RecentPosts___postlist___EntryItems_ctl00_PostTitle" href="http://blogs.msdn.com/nicold/archive/2007/12/29/update-winform-interface-from-a-different-thread.aspx"&gt;Update WinForm interface from a different thread&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;More information on &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.invokerequired.aspx" target="_blank"&gt;Control.InvokeRequired&lt;/a&gt; Property on MSDN.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-1188210392648969111?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/1188210392648969111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=1188210392648969111' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1188210392648969111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1188210392648969111'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/12/raise-events-on-main-form-from.html' title='Raise events on main form from different thread.'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-706026352356505328</id><published>2007-12-28T06:57:00.000-06:00</published><updated>2008-01-04T08:22:51.116-06:00</updated><title type='text'>Issues with mstsc rdp 6.0</title><content type='html'>&lt;div&gt;The change to the new Vista &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;RDP&lt;/font&gt; client can be a drastic one. &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;A lot&lt;/font&gt; of things have changed. Several changes break existing functionality that many people relied on.&lt;/div&gt;  &lt;div&gt;&amp;#160;&lt;/div&gt;  &lt;h3&gt;Windows key sticking:&lt;/h3&gt;  &lt;div&gt;If you use the windows key + L to lock your machine while working in a remote session, the windows key becomes stuck. When you return to your session, pressing any key that has a combination with the windows key will activate. E for explorer, L for lock, &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;ect&lt;/font&gt;... The solution is to use &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;ctrl&lt;/font&gt; +alt +&lt;font class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;del&lt;/font&gt;, or move focus away from the &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;RDP&lt;/font&gt; session before locking the computer. &lt;/div&gt;  &lt;div&gt;&amp;#160;&lt;/div&gt;  &lt;div&gt;&lt;/div&gt;  &lt;h3&gt;Default domain is wrong:&lt;/h3&gt;  &lt;div&gt;At some point all of our &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;mstsc&lt;/font&gt; client forgot what domain they were connected to. Even though my users logged into the local machine with the domain account and tried to remote into a domain terminal server. They tried to authenticate with the machine name as the domain. The solution is to add the domain to the &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;username&lt;/font&gt; when typing it in.&lt;/div&gt;  &lt;div&gt;&lt;/div&gt;  &lt;br /&gt;  &lt;h3&gt;Passwords &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;don't&lt;/font&gt; save to the &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;rdp&lt;/font&gt; file anymore:&lt;/h3&gt;  &lt;div&gt;You cannot distribute a &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;RDP&lt;/font&gt; file with a password. So the user must know the password to use the &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;rdp&lt;/font&gt; shortcut. &lt;/div&gt;  &lt;div&gt;&lt;/div&gt;  &lt;br /&gt;  &lt;h3&gt;&lt;font class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Login&lt;/font&gt; prompt changed:&lt;/h3&gt;  &lt;div&gt;&lt;font class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;&lt;/font&gt;Not only is it client side, it also has a different look. You can revert it back by adding a special line into the .&lt;font class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;RDP&lt;/font&gt; file: &lt;em&gt;&lt;font class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;enablecredsspsupport&lt;/font&gt;:i:0&lt;/em&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Can only save one username/password per server:&lt;/h3&gt;  &lt;div&gt;&amp;#160; This prevents you from creating 2 shortcuts with 2 different usernames to the same server.&amp;#160; I read that you can add a second rdp listening port and point one of those to the new port number to work around this one.    &lt;br /&gt;    &lt;br /&gt;&lt;/div&gt;  &lt;div&gt;&lt;/div&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;h5&gt;At face value, these look like minor issues.&lt;/h5&gt;  &lt;div&gt;But the amount of support calls and issues this created in our &lt;font class="blsp-spelling-corrected" id="SPELLING_ERROR_15"&gt;environment&lt;/font&gt; tied us up for a long time. All of them user related. &lt;font class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;Technology&lt;/font&gt; is great when its transparent to the users (and does not generate calls to support staff).&lt;/div&gt;  &lt;div&gt;&lt;/div&gt;  &lt;br /&gt;  &lt;div&gt;We have a good number of users that cant figure out the difference between &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;username&lt;/font&gt; passwords and email passwords. (I cant tell you the number of times we have had someone reboot to fix a problem only to have them call back to tell us they cant get the password to work anymore. ) The change that no longer defaults the domain, the change that &lt;font class="blsp-spelling-corrected" id="SPELLING_ERROR_18"&gt;sticks&lt;/font&gt; the windows key, and the different look of the &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;login&lt;/font&gt; screen were all drastic changes to them. &lt;/div&gt;  &lt;br /&gt;  &lt;div&gt;&lt;/div&gt;  &lt;div&gt;We also have a special application that we deploy using &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;RDP&lt;/font&gt;. We create a unique account for each computer that connects to it. We would save the password to the &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;RDP&lt;/font&gt; so every user uses the same &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;RDP&lt;/font&gt; on that machine. Now we have to have every possible user &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;login&lt;/font&gt;, then give us the keyboard to enter the password. Not only is that a huge support drain, its an annoyance to our users. (&lt;font class="blsp-spelling-corrected" id="SPELLING_ERROR_24"&gt;especially&lt;/font&gt; to our remote sites that we visit once every other week).&lt;/div&gt;  &lt;div&gt;&amp;#160;&lt;/div&gt;  &lt;div&gt;At one point we added a second app to the servers and tried to create a second shortcut for that.&amp;#160; Because the hostname was the same,&amp;#160; it was only keeping the login details of one username.&amp;#160; (we used a different username to access a different published app.)&lt;/div&gt;  &lt;div&gt;&lt;/div&gt;  &lt;br /&gt;  &lt;div&gt;The sticking window key &lt;font class="blsp-spelling-corrected" id="SPELLING_ERROR_25"&gt;compounds&lt;/font&gt; the problems. Our users &lt;font class="blsp-spelling-corrected" id="SPELLING_ERROR_26"&gt;don't&lt;/font&gt; know the password to that special application &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;RDP&lt;/font&gt; connection. So when they get the windows key stuck and press the L key, the remote session gets locked. We get the call and have to remote into that session and enter the password for them.&lt;/div&gt;  &lt;div&gt;&lt;/div&gt;  &lt;br /&gt;  &lt;div&gt;Our primary solution that works wonders was to upgrade the Vista 6.0 version to the &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;XP&lt;/font&gt; 5.2 version. That upgrade fixed all of those problems. &lt;/div&gt;  &lt;div&gt;&lt;/div&gt;  &lt;br /&gt;  &lt;div&gt;A second solution that I am about done with is to write my own client wrapper for the &lt;font class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;RDP&lt;/font&gt; 6.0 control. We have other issues that I can't solve any other way, and it solves these issues too. I will write up more details on that solution later.&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-706026352356505328?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/706026352356505328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=706026352356505328' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/706026352356505328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/706026352356505328'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/12/issues-with-mstsc-rdp-60.html' title='Issues with mstsc rdp 6.0'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-2307946192277673183</id><published>2007-12-26T06:39:00.000-06:00</published><updated>2007-12-28T17:40:08.668-06:00</updated><title type='text'>Why does my shared clipboard not work?</title><content type='html'>&lt;div&gt;I found an exelent write up on &lt;a class="headermaintitle" id="ctl00___ctl00___bth___BlogTitle" href="http://blogs.msdn.com/ts/default.aspx"&gt;Terminal Services Team Blog&lt;/a&gt; titled &lt;a href="http://blogs.msdn.com/ts/archive/2006/11/16/why-does-my-shared-clipboard-not-work-part-1.aspx"&gt;Why does my shared clipboard not work? &lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;I used to have an issue where my clipboard would stop working. I would eventualy have to reboot my computer to fix it. I would work with remote desktop alot and the mstsc was the cause of my problems. That write up explains exactly how the clipboard would lock up. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;I uncovered a program that would show me the process containing the lock and allow you to kill it. I would love to link that program, but I cant track it down. I did find another one that a microsoft MVP posted that I think does the same thing. Here is a copy of that post.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;Hassan, &lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;This has to do with some application that's having a lock over the Windows Clipboard. David Candy's application should determine the Process that's causing the problem. Download GetOpenClipboardWindow.zip from here: &lt;/em&gt;&lt;a href="http://windowsxp.mvps.org/temp/GetOpenClipboardWindow.zip" target="_blank" rel="nofollow"&gt;&lt;em&gt;http://windowsxp.mvps.org/temp/GetOpenClipboardWindow.zip&lt;/em&gt;&lt;/a&gt;&lt;em&gt; Unzip and run the tool. Post back what it reports. For best results, run this utility during the time you encounter the Copy&lt;=&gt;Paste problem. &lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;-- Ramesh, Microsoft MVP &lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;Windows XP Shell/User&lt;/em&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;In the end, upgrading to the RDP 6.0 client also fixes this problem in mstsc. Now that I have upgraded it, I no longer have this issue. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-2307946192277673183?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/2307946192277673183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=2307946192277673183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/2307946192277673183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/2307946192277673183'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/12/why-does-my-shared-clipboard-not-work.html' title='Why does my shared clipboard not work?'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-7795279553603601774</id><published>2007-12-24T07:18:00.000-06:00</published><updated>2007-12-24T08:40:03.575-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>No accessible 'Main' method with an appropriate signature was found</title><content type='html'>I was working in a project that was a windows application, but I decided to change it to a console application instead. I changed the type to console and selected Sub Main as my startup object. When I compiled it I got the fallowing error: Error 54 No accessible 'Main' method with an appropriate signature was found.&lt;br /&gt;&lt;br /&gt;I expected problems because I knew I did not have the Sub Main defined in my project. I added a class file and entered the fallowing code:&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;Public Class Main&lt;br /&gt;&lt;br /&gt;  Public Shared Sub Main()&lt;br /&gt;&lt;br /&gt;     Application.Run(New Form1)&lt;br /&gt;&lt;br /&gt;  End Sub&lt;br /&gt;&lt;br /&gt;End Class&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Several examples I saw had main defined with (ByVal args() As String) as the parameter. One thread on the subject indicated that you can add a module instead of a class. Here is the syntax for that.&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;Module Main&lt;br /&gt;&lt;br /&gt;   Public Sub Main(ByVal args() As String)&lt;br /&gt;&lt;br /&gt;      Application.Run(New Form1)&lt;br /&gt;&lt;br /&gt;   End Sub&lt;br /&gt;&lt;br /&gt;End Module&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You will notice that the shared keyword is left off inside the module.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-7795279553603601774?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/7795279553603601774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=7795279553603601774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7795279553603601774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7795279553603601774'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/12/no-accessible-main-method-with.html' title='No accessible &apos;Main&apos; method with an appropriate signature was found'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-4480783602082490657</id><published>2007-12-22T07:10:00.000-06:00</published><updated>2007-12-24T08:38:05.402-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Script'/><title type='text'>Mapping a drive with custom name</title><content type='html'>When mapping a drive, the full path of the share is displayed as the name of the drive. We have some very long path names and didn't want our users to see the details they didn't need. So I had to write a script to give those drives custom names.&lt;br /&gt;&lt;br /&gt;Our login scripts contained lots of net use statements in *.BAT or *.CMD files. The command looked like this:&lt;br /&gt;&lt;code&gt;&lt;pre&gt;NET USE H: //server/share/directory1/directory2/directory3&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and it would show in explorer like this:&lt;br /&gt;&lt;code&gt;&lt;pre&gt;directory3 on //server/share/directory1/directory2 (H:)&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;My goal was to make a script just as easy to use at NET USE. That is exactly what I ended up with. The new command looks like this:&lt;br /&gt;&lt;code&gt;&lt;pre&gt;Map.vbs H: //server/share/directory1/directory2/directory3 "My directory3"&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and it would map like this:&lt;br /&gt;&lt;code&gt;My directory3 (H:)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;By making the command simple the scripts are easy to read and modify by others on my team. Now that you know what we are doing, lets take a look at the code needed to make this work.&lt;br /&gt;&lt;br /&gt;We are going to save this code with the name Map.vbs. Its a VBScript file executed by the windows scripting host. To make the script more usable, it needs to read the variables from the command line. The first 3 lines populate the variables we will use later.&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;strDriveLetter = WScript.Arguments(0)&lt;br /&gt;strPath = WScript.Arguments(1)&lt;br /&gt;strDisplayName = WScript.Arguments(2)&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The next 2 lines I am going to show you display how to map the drive.&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;Set objNetwork = CreateObject("WScript.Network") &lt;br /&gt;objNetwork.MapNetworkDrive strDriveLetter, strPath, true&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This will map the path strPath to the drive strDriveLetter. The true as the 3rd param is the same as using the /PERSIST param of NET USE. It saves the mapping in the profile.&lt;br /&gt;&lt;br /&gt;Now we need to change the name of the mapping. This takes an existing share by drive letter and gives it a custom display name. This was one of the hardest pieces of code to find. The next 2 lines do just that.&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;Set oShell = CreateObject("Shell.Application") &lt;br /&gt;oShell.NameSpace(strDriveLetter &amp; "\").Self.Name = strDisplayName&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you put that all together you have a bare bones script to map a drive and rename it from the command line via a VBScript. In my next post, I plan on going more in depth into my map.vbs. I will show you how to check for an existing mapping on that letter and all the validation I added.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-4480783602082490657?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/4480783602082490657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=4480783602082490657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/4480783602082490657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/4480783602082490657'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/12/mapping-drive-with-custom-name.html' title='Mapping a drive with custom name'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-5327158199307171236</id><published>2007-12-18T06:44:00.000-06:00</published><updated>2007-12-22T00:03:22.801-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>.NET accessing embeded files in your project</title><content type='html'>I had some files that I wanted to embed into my project and access in code. I needed both images and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;xml&lt;/span&gt; files.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;First you have to add the files to the project. I create the images in paint before importing them. The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;xml&lt;/span&gt; files were created within Visual Studio. Things started to look a little cluttered, so I created folders in the project to group them up.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Once the files are in place you need to open the properties for each one. Change the build action to "&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;Embedded&lt;/span&gt; Resource". Now we can access the file streams from code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;image &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;warningImage&lt;/span&gt; = new Bitmap(this.GetType().Assembly.GetManifestResourceStream("Application1.images.warning.bmp"));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;StreamReader&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;xmlFile&lt;/span&gt; = new StreamReader(this.GetType().Assembly.GetManifestResourceStream("Application1.foldername.template.xml"));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;GetManifestResourceStream&lt;/span&gt; returns a stream. There is a overload for the bitmap constructor that takes a stream if its an image you are working with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-5327158199307171236?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/5327158199307171236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=5327158199307171236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/5327158199307171236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/5327158199307171236'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/12/net-accessing-embeded-files-in-your.html' title='.NET accessing embeded files in your project'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-5643553736136106841</id><published>2007-12-14T06:56:00.000-06:00</published><updated>2007-12-22T00:04:30.757-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>NullReferenceException raising an event in C#</title><content type='html'>I was working with events in C# and ran into this exception. &lt;strong&gt;System.NullReferenceException was unhandled Message="Object reference not set to an instance of an object."&lt;/strong&gt; This exception was at the exact point in my code where I attempted to raise the event. It turns out that if there are not event handlers attached to your event, an attempt to raise it will give you this exception. To solve it, you have to check to see if its null before raising it.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;public class TestEvent{ &lt;br /&gt;   public event EventHandler MyEvent; &lt;br /&gt;   public void RaiseMyEvent(){    &lt;br /&gt;      if(MyEvent != null){&lt;br /&gt;         MyEvent(this, null); &lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;All the samples I was looking at did not check for a null value, so neither did I. Now that I had the problem, I see why I need to check.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-5643553736136106841?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/5643553736136106841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=5643553736136106841' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/5643553736136106841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/5643553736136106841'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/12/nullreferenceexception-raising-event-in.html' title='NullReferenceException raising an event in C#'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-1889190404067894837</id><published>2007-12-09T18:00:00.000-06:00</published><updated>2007-12-09T17:56:29.616-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Script'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Running vbs from .net code</title><content type='html'>There are a few ways to run vbscript inside vb.net. If you just need the script to run, you can use the process object.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;Dim oProcess as new Process&lt;br /&gt;Try&lt;br /&gt;   oProcess.StartInfo.UseShellExecute = True&lt;br /&gt;   oProcess.StartInfo.FileName = "CScript c:\script.vbs //nologo"&lt;br /&gt;   oProcess.Start()&lt;br /&gt;   oProcess.WaitForExit()&lt;br /&gt;Finally&lt;br /&gt;   oProcess.Dispose()&lt;br /&gt;End Try&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.diagnostics.process.aspx"&gt;Process Class&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you have some VBScript that you want to intereact with variables or run on the fly. Microsoft has a ScriptControl that allows you to do just that. The script control has 3 options of running code.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Eval: Evaluates a text expression. &lt;/li&gt;&lt;li&gt;Run: Runs a named Sub or Function. &lt;/li&gt;&lt;li&gt;Execute: Executes a script statement.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;You can find more information on the ScriptControl at Microsoft.&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/184740"&gt;Q184740: How To Call Functions Using the Script Control&lt;/a&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/184739/EN-US/"&gt;Q184739: INFO: Where to Obtain the Script Control&lt;/a&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/184739/EN-US/"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you are looking to run vb.net code inside vbscript, see my other post:&lt;br /&gt;&lt;a href="http://kevinmarquette.blogspot.com/2007/10/running-vbnet-code-in-vbscript-or-other.html"&gt;Running VB.NET code in VBScript or other apps&lt;/a&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-1889190404067894837?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/1889190404067894837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=1889190404067894837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1889190404067894837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1889190404067894837'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/12/running-vbs-from-net-code.html' title='Running vbs from .net code'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-3194409524131542284</id><published>2007-12-07T19:37:00.000-06:00</published><updated>2007-12-14T21:15:49.618-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Raising an event in C#</title><content type='html'>Here is the simplest way to raise an event.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;public class TestEvent{&lt;br /&gt;   public event EventHandler MyEvent;&lt;br /&gt;   public void RaiseMyEvent(){&lt;br /&gt;      MyEvent(this, null);&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This uses the default EventHandler that returns a object source and a EventArgs ex. If you want to pass back different parameters, you will need to create your own delegate. The delegate we just used looks like this:&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;public delegate void EventHandler (object source, EventArgs ex);&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We dont have to define it because .NET already defined it for us. Here is a second example where we built a custom delegate and raise it.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;public delegate void MyCustomEventHandler (string message);&lt;br /&gt;&lt;br /&gt;public class TestEvent2{&lt;br /&gt;public event MyCustomEventHandler MyEvent2;&lt;br /&gt;public void RaiseMyEvent(){&lt;br /&gt;MyEvent2("Message sent with event");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now that I explained how to raise events, there is a bug in that code. I'm saving that for my next post: &lt;a href="http://kevinmarquette.blogspot.com/2007/12/nullreferenceexception-raising-event-in.html"&gt;NullReferenceException raising an event in C#&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-3194409524131542284?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/3194409524131542284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=3194409524131542284' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/3194409524131542284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/3194409524131542284'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/12/raising-event-in-c.html' title='Raising an event in C#'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-2502783470856618241</id><published>2007-11-17T17:00:00.000-06:00</published><updated>2007-11-28T15:11:26.452-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Inconsistent accessibility: base class is less accessible than class</title><content type='html'>I was doing some coding in c#. I had one class but decided to split it up so I could reuse some of the functionality later. So I made a simple shell and started moving pieces into the parent class.&lt;br /&gt;&lt;br /&gt;On my first compile I got this message: &lt;strong&gt;Inconsistent accessibility: base class is less accessible than class&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;I am a little rusty with my C# and classes, but it turns out I left off the public keyword on the new class. Adding &lt;strong&gt;public &lt;/strong&gt;fixed that compile error.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-2502783470856618241?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/2502783470856618241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=2502783470856618241' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/2502783470856618241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/2502783470856618241'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/11/inconsistent-accessibility-base-class.html' title='Inconsistent accessibility: base class is less accessible than class'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-4753361912251611874</id><published>2007-11-13T15:12:00.000-06:00</published><updated>2007-11-13T15:16:35.715-06:00</updated><title type='text'>Mapped drives missing in explorer.</title><content type='html'>We ran into a problem with our mapped drives on our network.  First time logins failed to display in explorer until they logged in the second time.   You can see them from a command or dos prompt.  The disconnect drives dialog also showed the mappings.  I can also kill the explorer.exe process and when I run it from the task manager, the mapping show up.&lt;br /&gt;&lt;br /&gt;Running the logon scripts manually will make the drives show up.  It looks like a timing issue.  If my script maps a lot of drives, the earlier ones are the ones that don’t show up.  Any that map after explorer loads work fine.  It did not matter if it was the users individual logon script or the group policy log on script.  Different logon scripts didn’t fix it either.  I have a custom vb script that I use, but I also tested it with a batch file full of NET USE commands.&lt;br /&gt;&lt;br /&gt;I have worked on this issue for a long time.  Searching different ways and posting to various forums.  Finally Lanwench [MVP - Exchange] responded to my problem on microsoft’s technet newsgroup on Windows XP Networking.  His solution was to enable the “Always Wait for Network” GPO setting and linked me to the detailed reason for that.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.boyce.us/gp/gpcontent.asp?ID=39"&gt;Always wait for the network at computer startup and logon&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Administrative Template:&lt;/strong&gt; System&lt;br /&gt;&lt;strong&gt;Policy Node:&lt;/strong&gt; MACHINE&lt;br /&gt;&lt;strong&gt;Policy Path:&lt;/strong&gt; Administrative Templates\System\Logon&lt;br /&gt;&lt;strong&gt;Supported On:&lt;/strong&gt; At least Microsoft Windows XP Professional or Windows Server 2003 family&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Help/Explain Text:&lt;/strong&gt; Determines whether Windows XP waits for the network during computer startup and user logon. By default, Windows XP does not wait for the network to be fully initialized at startup and logon. Existing users are logged on using cached credentials, which results in shorter logon times. Group Policy is applied in the background once the network becomes available. Note that because this is a background refresh, extensions such as Software Installation and Folder Redirection take two logons to apply changes. To be able to operate safely, these extensions require that no users be logged on. Therefore, they must be processed in the foreground before users are actively using the computer. In addition, changes that are made to the user object, such as adding a roaming profile path, home directory, or user object logon script, may take up to two logons to be detected. If a user with a roaming profile, home directory, or user object logon script logs on to a computer, Windows XP always waits for the network to be initialized before logging the user on. If a user has never logged on to this computer before, Windows XP always waits for the network to be initialized. If you enable this setting, logons are performed in the same way as for Windows 2000 clients, in that Windows XP waits for the network to be fully initialized before users are logged on. Group Policy is applied in the foreground, synchronously. If you disable or do not configure this setting, Windows does not wait for the network to be fully initialized and users are logged on with cached credentials. Group Policy is applied asynchronously in the background. Note: If you want to guarantee the application of Folder Redirection, Software Installation, or roaming user profile settings in just one logon, enable this setting to ensure that Windows waits for the network to be available before applying policy. Note: For servers, the startup and logon processing always behaves as if this policy setting is enabled.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Registry Settings:&lt;/strong&gt; HKLM\Software\Policies\Microsoft\Windows NT\CurrentVersion\Winlogon!SyncForegroundPolicy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-4753361912251611874?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/4753361912251611874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=4753361912251611874' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/4753361912251611874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/4753361912251611874'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/11/mapped-drives-missing-in-explorer.html' title='Mapped drives missing in explorer.'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-6385706189180033885</id><published>2007-11-02T16:48:00.000-05:00</published><updated>2007-11-02T17:16:42.990-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><category scheme='http://www.blogger.com/atom/ns#' term='Wii'/><title type='text'>Christmas Wish List</title><content type='html'>People keep asking for a wish list for &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;Christmas&lt;/span&gt;. &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;I'm&lt;/span&gt; a hard person to buy for sometimes. I &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;usually&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;don't&lt;/span&gt; need very much. When I do see something I want, I have a hard time not buying it early.&lt;br /&gt;&lt;br /&gt;I recently purchased a Nintendo &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Wii&lt;/span&gt;. That does open &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;a lot&lt;/span&gt; of options for gifts. I made a wish list on amazon that contains the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Wii&lt;/span&gt; stuff I want.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fregistry%2Fwishlist%2FXXBWB0QA61Z%3Freveal%3Dunpurchased%26filter%3Dall%26sort%3Dpriority%26layout%3Dstandard%26x%3D6%26y%3D13&amp;amp;tag=kevmthethinid-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;My Wish List&lt;/a&gt;&lt;img style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=kevmthethinid-20&amp;amp;l=ur2&amp;amp;o=1" width="1" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;Each game adds different value to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Wii&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB000FQ9QVI%3Fie%3DUTF8%26coliid%3DI15DX1E25LQ2Y%26colid%3DXXBWB0QA61Z&amp;amp;tag=kevmthethinid-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Super Mario Galaxy&lt;/a&gt;&lt;img style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=kevmthethinid-20&amp;amp;l=ur2&amp;amp;o=1" width="1" border="0" /&gt;: Every Nintendo has a Mario platform game that &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;pules&lt;/span&gt; you into the system. Its a showcase of design and interaction with the system. This game it &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;exactly&lt;/span&gt; that. Mario is new every time its released and becomes a must have game.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB000LSJKAM%3Fie%3DUTF8%26coliid%3DINUDV4UUELOEQ%26colid%3DXXBWB0QA61Z&amp;amp;tag=kevmthethinid-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Mario Party 8&lt;/a&gt;&lt;img style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=kevmthethinid-20&amp;amp;l=ur2&amp;amp;o=1" width="1" border="0" /&gt;: With the focus of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Wii&lt;/span&gt; around group interaction and fun, this game builds on that even more. With &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;a lot&lt;/span&gt; of mini games and the option to play 4 people at once, your group will have lots of fun on this one.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB000FQBPDU%3Fie%3DUTF8%26coliid%3DI1AZHETNI2AS77%26colid%3DXXBWB0QA61Z&amp;amp;tag=kevmthethinid-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Metroid&lt;/span&gt; Prime 3 Corruption&lt;/a&gt;&lt;img style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=kevmthethinid-20&amp;amp;l=ur2&amp;amp;o=1" width="1" border="0" /&gt;: Another household Nintendo name that never lets you down. This is a highly interactive first person single player adventure.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB000FQ9R4E%3Fie%3DUTF8%26coliid%3DI30ZFN74AFS7HQ%26colid%3DXXBWB0QA61Z&amp;amp;tag=kevmthethinid-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Super Smash Bros. Brawl&lt;/a&gt;&lt;img style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=kevmthethinid-20&amp;amp;l=ur2&amp;amp;o=1" width="1" border="0" /&gt;: to be released just after &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;Christmas&lt;/span&gt;, its a arcade fighting style game. It pulls in all the classic characters from several popular titles and puts them in the ring &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;against&lt;/span&gt; each other.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB000GHLBUA%3Fie%3DUTF8%26coliid%3DI2GTCFD7NMS7C4%26colid%3DXXBWB0QA61Z&amp;amp;tag=kevmthethinid-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Super Monkey Ball Banana Blitz &lt;/a&gt;&lt;img style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=kevmthethinid-20&amp;amp;l=ur2&amp;amp;o=1" width="1" border="0" /&gt;: A Sega release that places you in control of a glass ball. You tilt and turn the ground under the ball to control its movements. sounds like its easy to pick up and learn. The &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_15"&gt;difficulty&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;gets&lt;/span&gt; insane by the time you finish.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-6385706189180033885?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/6385706189180033885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=6385706189180033885' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/6385706189180033885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/6385706189180033885'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/11/christmas-wish-list.html' title='Christmas Wish List'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-2179533577180481790</id><published>2007-10-19T11:21:00.000-05:00</published><updated>2007-10-19T11:30:12.004-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Servers'/><title type='text'>Stop or Disable Terminal Server Logons (Change Logon)</title><content type='html'>Here is a simple command that I had a hard time finding.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;Change Logon /Disable&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;Change Logon /Enable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It prevents users from logging on to the server that the command was ran on. All new connections will be disabled. Existing connections will not be disconnected. So you can run this with remote users logged in to stop new connections while you wait for people to exit.&lt;br /&gt;&lt;br /&gt;You can run that from a terminal session. If you get disconnected, you will have to get physical access to the machine to activate it.&lt;br /&gt;&lt;br /&gt;From the website: Enables or disables logons from client sessions, or displays current logon status. This utility is useful for system maintenance.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technet2.microsoft.com/WindowsServer/en/Library/15a2f502-1fa3-4d3b-a74b-cec04ee52d061033.mspx?pf=true"&gt;http://technet2.microsoft.com/WindowsServer/en/Library/15a2f502-1fa3-4d3b-a74b-cec04ee52d061033.mspx?pf=true&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-2179533577180481790?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/2179533577180481790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=2179533577180481790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/2179533577180481790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/2179533577180481790'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/10/stop-or-disable-terminal-server-logons.html' title='Stop or Disable Terminal Server Logons (Change Logon)'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-3368840865938530938</id><published>2007-10-19T09:54:00.000-05:00</published><updated>2007-12-09T17:58:09.390-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Script'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Running VB.NET code in VBScript or other apps</title><content type='html'>Here is how you can write a .NET component and use it in a script. First, create a library that contains the code you want to run.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;Public Class FileWriter&lt;br /&gt;    Public Sub Save(ByVal PathAndFileName As String)&lt;br /&gt;        Try&lt;br /&gt;            Dim FileStream As New System.IO.StreamWriter(PathAndFileName, False)      &lt;br /&gt;            FileStream.WriteLine("Hello World")&lt;br /&gt;            FileStream.Flush()&lt;br /&gt;            FileStream.Close()&lt;br /&gt;     FileStream.Dispose()&lt;br /&gt;&lt;br /&gt;        Catch e As Exception&lt;br /&gt;            Dim fs As New System.IO.StreamWriter("C:\error.txt", True)&lt;br /&gt;            fs.WriteLine("Exception: {1}", 1, e.Message)&lt;br /&gt;            fs.Flush()&lt;br /&gt;            fs.Close()&lt;br /&gt;            fs.Dispose()&lt;br /&gt;            Throw e&lt;br /&gt;        End Try&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;End Class&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then compile the library and run &lt;span style="color:#000099;"&gt;regasm c:\project\bin\NameOfDLL.dll /CODEBASE&lt;/span&gt; to register it. Regasm is in your .net folder. That will register the dll so you can use it later. Regsvr32 is for non .NET dlls. Your script is next. Save it as a .vbs file.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;dim fs&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;set fs = CreateObject("Project1.FileWriter")&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;fs.save "c:\file.txt"&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;set fs = nothing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Anyplace you can call CreateObject, you should be able to use your class. VBA in office is one such place. And I did not test this code, I just gutted another project to have some examples.&lt;br /&gt;&lt;br /&gt;Related: &lt;a href="http://kevinmarquette.blogspot.com/2007/12/running-vbs-from-net-code.html"&gt;Running vbs from .net code&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-3368840865938530938?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/3368840865938530938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=3368840865938530938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/3368840865938530938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/3368840865938530938'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/10/running-vbnet-code-in-vbscript-or-other.html' title='Running VB.NET code in VBScript or other apps'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-2905193213773766317</id><published>2007-10-19T09:44:00.000-05:00</published><updated>2007-10-19T11:08:45.170-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>mscorlib: Request for the permission of type Version Culture PublicKeyToken failed.</title><content type='html'>I wrote a little database access code in vb.net that I wanted to use in another script. I was getting this error though. &lt;strong&gt;C:\Test.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;vbs&lt;/span&gt;(6, 1) &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;mscorlib&lt;/span&gt;: Request for the permission of type 'System.Data.OleDb.OleDbPermission, System.Data, Version=2.0.0.0, Culture=neutral, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;PublicKeyToken&lt;/span&gt;=b77a5c561934e089' failed. &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;My &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;dev&lt;/span&gt; machine worked fine. And the other box looked like it had the data access and .NET components I needed. Looking closer, it was talking about permissions. The connection string was the same and it contained the password. I decided it was a security zone messing me up.&lt;br /&gt;&lt;br /&gt;When I ran &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;regasm&lt;/span&gt;, the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;dll&lt;/span&gt; was located on a network share. That was about the only difference. So I unregistered it, moved it &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;locally&lt;/span&gt;, and ran &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;regasm&lt;/span&gt; again.  The problem went away.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;mscorlib&lt;/span&gt;: Request for the permission of type Version Culture &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;PublicKeyToken&lt;/span&gt; failed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-2905193213773766317?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/2905193213773766317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=2905193213773766317' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/2905193213773766317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/2905193213773766317'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/10/mscorlib-request-for-permission-of-type.html' title='mscorlib: Request for the permission of type Version Culture PublicKeyToken failed.'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-1431704849205463121</id><published>2007-10-18T14:48:00.000-05:00</published><updated>2007-12-17T19:19:26.252-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='Script'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>The system cannot find the file specified. CreateObject</title><content type='html'>I was attempting to use some vb.net code in a vbs file and was getting "The system cannot find the file specified." on the CreateObject line. I tracked it down to the way I registered the DLL.&lt;br /&gt;&lt;br /&gt;One sugestion told me to unregister and re register it with regsvr32. Because I was using .NET, I knew that was not it. It turned out to be my use of regasm to register my DLL. I left out the /CODEBASE option.&lt;br /&gt;&lt;br /&gt;Once I registered it with that option, the error went away.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-1431704849205463121?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/1431704849205463121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=1431704849205463121' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1431704849205463121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/1431704849205463121'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/10/system-cannot-find-file-specified.html' title='The system cannot find the file specified. CreateObject'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-7097787885450833497</id><published>2007-06-25T12:47:00.000-05:00</published><updated>2007-10-18T14:57:11.152-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP'/><title type='text'>Invalid postback or callback argument.</title><content type='html'>I was &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;tring&lt;/span&gt; to move some web apps to a demo server and ran into this error message on one of them.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Invalid &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;postback&lt;/span&gt; or callback argument. Event validation is enabled using &lt;pages enableeventvalidation="true"&gt;in configuration or &lt;%@ Page EnableEventValidation="true" %&gt;in a page. For security purposes, this feature verifies that arguments to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;postback&lt;/span&gt; or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;ClientScriptManager&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;RegisterForEventValidation&lt;/span&gt; method in order to register the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;postback&lt;/span&gt; or callback data for validation.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;what made this move interesting is that the page is a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;aspx&lt;/span&gt; page that was converted from a asp page some time ago and that it was still configured as a dot net 1.1 app in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;iis&lt;/span&gt;. When I moved it, i saw the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;aspx&lt;/span&gt; ending and set it us as a dot net 2.0 app. Changing it back fixed my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;issus&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I did find this link to a related issue and would have tried those steps if my trick did not work.&lt;br /&gt;&lt;a href="http://www.netnewsgroups.net/group/microsoft.public.dotnet.framework.aspnet/topic637.aspx"&gt;http://www.netnewsgroups.net/group/microsoft.public.dotnet.framework.aspnet/topic637.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-7097787885450833497?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/7097787885450833497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=7097787885450833497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7097787885450833497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7097787885450833497'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/06/invalid-postback-or-callback-argument.html' title='Invalid postback or callback argument.'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-8289621565975089530</id><published>2007-04-20T15:19:00.000-05:00</published><updated>2007-10-18T14:57:54.518-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>BACKUP LOG cannot be performed because there is no current database backup</title><content type='html'>I was getting this message when trying to use a script to back up my database: "BACKUP LOG cannot be performed because there is no current database backup". My searching lead me to this link:&lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=243166&amp;amp;SiteID=1"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=243166&amp;amp;SiteID=1&lt;/a&gt;. where someone else was having the same issue.&lt;br /&gt;&lt;br /&gt;The problem happens when you change the database to simple to truncate the log, then back to full recovery. You have to do a manual full backup before you can do a log back up again.&lt;br /&gt;&lt;br /&gt;I had gone to simple recovery in an attempt to shrink a log file that was not being maintained.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-8289621565975089530?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/8289621565975089530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=8289621565975089530' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/8289621565975089530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/8289621565975089530'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/04/backup-log-cannot-be-performed-because.html' title='BACKUP LOG cannot be performed because there is no current database backup'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-7337050677021569922</id><published>2007-04-20T10:58:00.000-05:00</published><updated>2007-04-20T11:43:14.449-05:00</updated><title type='text'>Migrating SQL Reporting Services 2005</title><content type='html'>&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;I'm&lt;/span&gt; in the process of migrating our production report server and databases into a Virtual PC client to create a Demo machine.  This took &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;a lot&lt;/span&gt; more steps than I expected.&lt;br /&gt;&lt;br /&gt;I installed &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;SQL&lt;/span&gt; and Reporting Services.  I then tried to back up and restore the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;report server&lt;/span&gt; database and was not &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;having&lt;/span&gt; any luck.  I later &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;discovered&lt;/span&gt; that I need to move both the report server database and the report server temp database.&lt;br /&gt;&lt;br /&gt;I used the a script found on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;MSDN&lt;/span&gt; titled &lt;a href="http://msdn2.microsoft.com/en-us/library/ms156421.aspx"&gt;Moving a Report Server Database to Another Computer &lt;/a&gt;.  It looks like it would be found in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;SQL&lt;/span&gt; Server 2005 Books Online. &lt;br /&gt;&lt;br /&gt;This &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;script&lt;/span&gt; only works on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;sql&lt;/span&gt; server 2005.  There are some new keywords used that 2000 does not support.  One key detail was not to use the GUI to back up and restore the databases.  Either use a script or detach/reattach the files.  The article explains this.&lt;br /&gt;&lt;br /&gt;In the configure report server &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;gui&lt;/span&gt;, I had to change the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;credentials&lt;/span&gt; type.  The default was not working for me.  I set it to windows and entered in the account info. connected and applied the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;changes&lt;/span&gt;.  If you &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;entered&lt;/span&gt; in the wrong password, you will not be alerted to the mistake.&lt;br /&gt;&lt;br /&gt;Next step was to restore the encryption key.  You will have to export it from the first report server by using the same tool.  I was getting this error on the restore: "&lt;strong&gt;The encrypted value for the "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;LogonCred&lt;/span&gt;" configuration setting cannot be decrypted&lt;/strong&gt;".  My problem was leaving the password blank on the database set up section.&lt;br /&gt;&lt;br /&gt;Once I placed a password in there and gave that account access to the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_15"&gt;databases&lt;/span&gt;, it worked for me.&lt;br /&gt;&lt;br /&gt;Another issue I was having was getting the report server initialized.  Adding the encryption key &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;solved&lt;/span&gt; that.&lt;br /&gt;&lt;br /&gt;I then moved over my content, fixed &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;permitions&lt;/span&gt;, and changed the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;datascources&lt;/span&gt;.  EXEC sp_change_users_login 'Update_One', 'username', 'username' can be an important command to fix logon accounts after a database migration.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-7337050677021569922?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/7337050677021569922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=7337050677021569922' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7337050677021569922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/7337050677021569922'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2007/04/migrating-sql-reporting-services-2005.html' title='Migrating SQL Reporting Services 2005'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-4741278139634003083</id><published>2006-12-29T20:44:00.000-06:00</published><updated>2007-12-11T19:57:04.196-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='Games'/><title type='text'>Microsoft Strategic Commander X05-92630</title><content type='html'>I dug out my old Microsoft Strategic Commander X05-92630 to play some World of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0" onclick="BLOG_clickHandler(this)"&gt;Warcraft&lt;/span&gt; with and had a hard time getting it to work. My first problem was the missing CD. My second was discovering that Microsoft has discontinued support for it. The drivers are included in windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1" onclick="BLOG_clickHandler(this)"&gt;XP&lt;/span&gt;, but the profile software for the buttons &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;isn't&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;There was a download in &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;Microsoft&lt;/span&gt; downloads that looked &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;promising&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5" onclick="BLOG_clickHandler(this)"&gt;SWGameEN&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6" onclick="BLOG_clickHandler(this)"&gt;exe&lt;/span&gt;. It was the 95/98 drivers, but other sites linked to it claiming it was 2000/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7" onclick="BLOG_clickHandler(this)"&gt;XP&lt;/span&gt; compatible. I ran it and got this annoying error message. &lt;em&gt;Error creating process &lt;setup\_setup.exe&gt;. Reason: The system cannot find the file specified.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;If I ran it in compatibility mode, the error went away. But it choked trying to load &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8" onclick="BLOG_clickHandler(this)"&gt;DirectX&lt;/span&gt; stuff. &lt;em&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9" onclick="BLOG_clickHandler(this)"&gt;DirectX&lt;/span&gt; Setup Initialization Failed.&lt;/em&gt; I updated &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10" onclick="BLOG_clickHandler(this)"&gt;DirectX&lt;/span&gt; and it still failed. I searched for other copies of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11" onclick="BLOG_clickHandler(this)"&gt;SWGameEN&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12" onclick="BLOG_clickHandler(this)"&gt;exe&lt;/span&gt; but those failed with the same problem.&lt;br /&gt;&lt;br /&gt;My final attempt before I tossed this in the trash was to search for the model number. X05-92630. Someone had repackaged the install files. &lt;a href="http://members.driverguide.com/driver/detail.php?driverid=78554"&gt;http://members.driverguide.com/driver/detail.php?driverid=78554&lt;/a&gt;. It started the install and worked like a charm. There was a long pause where there was nothing on the screen and I started to think it failed. But it came back and told me to unplug and replug in my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13" onclick="BLOG_clickHandler(this)"&gt;USB&lt;/span&gt; device.&lt;br /&gt;&lt;br /&gt;I might &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;rehost&lt;/span&gt; that download someplace else, but I'm up and running.&lt;br /&gt;&lt;br /&gt;Update: I am now using &lt;br /&gt;&lt;a href="http://www.amazon.com/gp/product/B000VMWCSK?ie=UTF8&amp;tag=kevmthethinid-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B000VMWCSK"&gt;Zboard Fang Gamepad ZGP-1000&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=kevmthethinid-20&amp;l=as2&amp;o=1&amp;a=B000VMWCSK" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-4741278139634003083?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/4741278139634003083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=4741278139634003083' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/4741278139634003083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/4741278139634003083'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2006/12/microsoft-strategic-commander-x05-92630.html' title='Microsoft Strategic Commander X05-92630'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-111042290565329741</id><published>2005-03-09T20:00:00.000-06:00</published><updated>2005-03-09T20:54:15.426-06:00</updated><title type='text'>How I got Adobe Photoshop to run as a limited user</title><content type='html'>Today I was locking down a computer lab and ran into problems with adobe photoshop 6.0. Up until now, all users were administrators on the machines that they were working on. We have had little problems and the politics are easier to deal with.&lt;br /&gt;&lt;br /&gt;Spyware is finally taking a lot of our time, so we want to take some steps to avoid it. Running everyone as a &lt;a href="http://blogs.msdn.com/aaron_margosis/"&gt;limited user&lt;/a&gt; is the simplest security step to take. We just have to keep the programs that they use working. That brings us to Photoshop.&lt;br /&gt;&lt;br /&gt;When running as a limited user, photoshop starts to load. It errors out with a message about a file that is locked. The first two obvious security setting that need to be checked are the permissions on the TEMP folder and the Program files\adobe\photoshop folder. If the TEMP folder is in the user profile, it will not be a problem. We had it redirected to c:\windows\temp and that caused us a few problems.&lt;br /&gt;&lt;br /&gt;Photoshop also saves settings in the application folder*, so we decided to grant full access to that folder. This method worked for most programs that have problems. The registry is also a place to look, but the messages talking about locked files kept me looking at the filesystem. When that did not solve it, I looked to my toolbox for help.&lt;br /&gt;&lt;br /&gt;I loaded up &lt;a href="http://www.sysinternals.com/index.shtml"&gt;sysinternal&lt;/a&gt;'s &lt;a href="http://www.sysinternals.com/ntw2k/source/filemon.shtml"&gt;filemon.exe &lt;/a&gt;to watch what files photoshop was not able to access. It showed Photoshop trying to create and then open a temporary file (the swap file) on the root of the C: drive. I added a advanced security permition that allowed full read/write access to the drive and I checked the box that says apply to this folder only (so I don't give them full access to everything, just access to files on the C).&lt;br /&gt;&lt;br /&gt;Finally after that, Photoshop was able to run with out any problems. I tried to search for this and could not find it. The only solution was to use FAT32 instead of NTFS when formatting. What good is a limited user if you run on FAT32.&lt;br /&gt;&lt;br /&gt;To sum up the changes:&lt;br /&gt;Give user group read/write access to c:\program files\adobe\photoshop&lt;br /&gt;Give user group advanced read/write access to c:\ and &lt;strong&gt;ONLY&lt;/strong&gt; apply it to "this folder only"&lt;br /&gt;verify user group has read/write access to %temp% folder.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;* I was working from an existing install, I did not try to reinstall it. Some programs give you the option "Just for me" or "For Everyone" and that makes a difference.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-111042290565329741?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/111042290565329741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=111042290565329741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/111042290565329741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/111042290565329741'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/03/how-i-got-adobe-photoshop-to-run-as.html' title='How I got Adobe Photoshop to run as a limited user'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110974802724611988</id><published>2005-03-02T01:07:00.000-06:00</published><updated>2005-03-02T01:20:27.246-06:00</updated><title type='text'>Spyware can be stopped</title><content type='html'>I have 2 ideas for stopping spyware or at least make the game more exciting. I think would work if someone could get the right people behind them.&lt;br /&gt;&lt;br /&gt;1) Patents. That is a hot topic. Software patents and how they are harmful to the software industry. Someone should compile a list of patents that spyware is using or create a think team to patent new ideas before they use them. They will either work around the patents or get the laws changed.&lt;br /&gt;&lt;br /&gt;2) Companies should sue for the use of their hardware for profit. Users of big companies click yes to the EULA, but it is the companies property and the spyware is using system resources for advertising. I have heard of cases in the past where hackers stole idle time from computers and the companies cam down on them with the full wrath of the law. Why is this any different.&lt;br /&gt;&lt;br /&gt;IANAL, but I think both of these sound reasonable. If someone forms a patent team, I already see few things spyware could be doing, but isn't. This epidemic will get worse before it gets better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110974802724611988?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110974802724611988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110974802724611988' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110974802724611988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110974802724611988'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/03/spyware-can-be-stopped.html' title='Spyware can be stopped'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110965870361775850</id><published>2005-03-01T00:29:00.000-06:00</published><updated>2005-03-01T00:31:43.623-06:00</updated><title type='text'>This is not news, its the way it is</title><content type='html'>It is sad that the internet has become so hostile. At work I connected one of our servers to a connection on the outside of our firewall for some remote support (didn't have the VPN papers signed yet). The moment that I enabled the nic, the server informed me that the RPC Service has failed and the computer will shut down.&lt;br /&gt;&lt;br /&gt;I was foolish for not checking the patch levels. I assumed that someone else was on top of that. A mistake I will not make again. But home users have problems of their own. They don't know they have to keep it up patched. If I had my grandma running Linux, I would be the one patching it. What about converting all my friends and family to Linux. I would be so overwhelmed keeping each one current.&lt;br /&gt;&lt;br /&gt;As it stands, I format, install XP /w SP2, change their user accounts to limited access, install spyware detection, antivirus, leave the firewall and automatic updates on, and finally put firefox on the desktop.&lt;br /&gt;&lt;br /&gt;At the same time, I have to explain why XP is better than the 98 or ME that came with the computer, what SP2 is and why it takes so long, what a firewall is, what firefox is, why I created a special admin account for them to install stuff with and why the should never surf the web while logged into admin with the red background.&lt;br /&gt;&lt;br /&gt;And if you are a slashdot regular, I am not telling you anything new. I should release this as a news story, but as we all know, this is not news. Its just the way it is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110965870361775850?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110965870361775850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110965870361775850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110965870361775850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110965870361775850'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/03/this-is-not-news-its-way-it-is.html' title='This is not news, its the way it is'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110956682401574669</id><published>2005-02-27T22:40:00.000-06:00</published><updated>2005-02-27T23:00:24.016-06:00</updated><title type='text'>What about the rest of the spyware?</title><content type='html'>spyware scanners only get 50% - 70% of all known spyware. Using two scanners help, but that's a large percentage of spyware that still get by. I just scanned a system with Microsoft's Antispyware and it removed every thing it found, but the realtime protection was still indicating that something was trying to change my browser addresses.&lt;br /&gt;&lt;br /&gt;I want to put together a guide to tracking down that last 10% of spyware that gets overlooked by the scanners. Some simple developer tools can be very powerful in the tracking down spyware. &lt;a href="http://www.sysinternals.com/ntw2k/utilities.shtml"&gt;Sysinternals &lt;/a&gt;has a good collection of tools that I want to talk about with tracking down spyware in mind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110956682401574669?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110956682401574669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110956682401574669' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110956682401574669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110956682401574669'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/02/what-about-rest-of-spyware.html' title='What about the rest of the spyware?'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110946254417546551</id><published>2005-02-26T17:37:00.000-06:00</published><updated>2005-02-26T18:02:24.176-06:00</updated><title type='text'>IDownload and ISpyware</title><content type='html'>I think the fall off IDownload and ISearch has started. They may have screwed up. They want every reference to them being spyware removed. I am not saying that Idownload or ISearch are spyware or adware. I don't care if they are malware or not. As you search the web now, the talk about them trying to shut up the small sites and antispyware vendors is what every one will see.&lt;br /&gt;&lt;br /&gt;One site, &lt;a href="http://spywarewarrior.com/"&gt;http://spywarewarrior.com/&lt;/a&gt; has a blog with great antispyware information. They never came out and said that IDownload or iSearch are spyware, they listed what spyware scanners were looking for. IDownload and ISearch just happened to be on that list.&lt;br /&gt;&lt;br /&gt;See: &lt;a title="Permanent Link: SpywareWarrior Responds to iSearch/iDownload" href="http://netrn.net/spywareblog/archives/2005/02/24/spywarewarrior-responds-to-isearchidownload/" rel="bookmark"&gt;SpywareWarrior Responds to iSearch/iDownload&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It it were my computer, I would remove it. But that's my opinion&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110946254417546551?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110946254417546551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110946254417546551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110946254417546551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110946254417546551'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/02/idownload-and-ispyware.html' title='IDownload and ISpyware'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110938707160798887</id><published>2005-02-25T20:50:00.000-06:00</published><updated>2005-02-25T21:04:31.606-06:00</updated><title type='text'>Spyware is like cancer</title><content type='html'>Once it is in your system, you are not going to get it out. Ok, maybe today. But as the fight goes on, they will win if they get the first attack.&lt;br /&gt;&lt;br /&gt;For example, I see them create a dummy key in the registry under run. It watches for it to be removed and reboots the system.&lt;br /&gt;&lt;br /&gt;The are already watching that key. Try deleting it and press F5. It comes back. I have seen it many times. It doesn't take much more work to reboot the computer. Crappy spyware already crash the system.&lt;br /&gt;&lt;br /&gt;At that point...&lt;br /&gt;reformat, reinstall&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110938707160798887?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110938707160798887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110938707160798887' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110938707160798887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110938707160798887'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/02/spyware-is-like-cancer.html' title='Spyware is like cancer'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110937643946603635</id><published>2005-02-25T17:19:00.000-06:00</published><updated>2005-02-25T18:07:19.466-06:00</updated><title type='text'>Work harder, I know you can ...</title><content type='html'>Why am I always bringing computers to their knees. On my own machine, I can understand it. But I also over work our servers. I do this all the time. I get tired of it. If I have time to write about it while I watch it process ....&lt;br /&gt;&lt;br /&gt;This time is unusual, but it just reminds me how much it happens. I am looking at a system that I will be working with and I want to diagram the database structure. Sounds simple, doesn't it? My problem is the database size. 600 tables. All the tools I am using are choking on it. SQL Server Diagrams and Visual Studio place all the tables in a row if no relationships are defined. At first glance, the database has very few relationships (in the database, I think it is managed in code). Visio 2003 has done the best job so far. It will group the tables on the page. As I work with all 600 tables, the memory requirements are more then my computer wants to deal with.&lt;br /&gt;&lt;br /&gt;I am looking at trying to display possible relationships, but that is not working either. Visio is very programmable, but I can not find a way to access each shapes database fields. Either it can not be done, or my search terms are to vague. I wanted to loop through each shape's Primary key and connect it to any table that has a matching field name. Without the ability to talk to the field names, it cant be done.&lt;br /&gt;&lt;br /&gt;My next thought was to build the relationships in the database. I attached a copy of the working database and researched my commands. It generated the SQL I wanted to run. As I was running it, I realize that most tables have multiple fields in their Primary Keys. My code did not account for that. It doesn't have to be exact. I am trying to reimport into visio, but it looks like I over worked it even though it eventually finishes. I do have to say that I have not crashed visio yet.&lt;br /&gt;&lt;br /&gt;Each step takes way to long (On both the server and my workstation). I feel as if I have done nothing all day and it iritates me. I will eventually send the diagram to the printers and post it on my wall. 100 x 120 inches.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110937643946603635?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110937643946603635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110937643946603635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110937643946603635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110937643946603635'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/02/work-harder-i-know-you-can.html' title='Work harder, I know you can ...'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110936376137706273</id><published>2005-02-25T14:35:00.000-06:00</published><updated>2005-02-25T14:36:01.376-06:00</updated><title type='text'>All about the DHCP server callout API functions.</title><content type='html'>I have looked for this before, I just didn't know what to search for.&lt;br /&gt;&lt;br /&gt;I have looked for scripting dhcp, loading dhcp as a ActiveX control, and commandline access.  And I never found what I was looking for.&lt;br /&gt;&lt;br /&gt;I was wanting to track DHCP requests and limit who is to receive them.  This is exactly what I needed. &lt;br /&gt;&lt;br /&gt;other questions. How would this work with VB.NET?  I probably shouldn't write DHCP dll's in managed code, but VB is our standard language.  Would it be easyer to write a wrapper in C++ to let me do the work in VB.NET?  Any thoughts?&lt;br /&gt;&lt;br /&gt;What about running 2 DHCP Servers on the same box and loading custom DLL's.  I want one group of computers to get one ip range and another to get a different range.  Would that be possible, or am I dreaming.  &lt;br /&gt;&lt;br /&gt;&lt;a id="viewpost.ascx_TitleUrl" href="http://blogs.msdn.com/anto_rocks/archive/2005/02/25/380510.aspx"&gt;All about the DHCP server callout API functions.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110936376137706273?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110936376137706273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110936376137706273' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110936376137706273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110936376137706273'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/02/all-about-dhcp-server-callout-api.html' title='All about the DHCP server callout API functions.'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110935902791535283</id><published>2005-02-25T12:10:00.000-06:00</published><updated>2005-02-25T13:17:07.916-06:00</updated><title type='text'>I can see it now, spyware introduced flash adds</title><content type='html'>On slashdot.org there was a talk about flash bassed adds and how popular they are becomming.  It is harder to block them.  Some simple solutions were talked about, but I see the advertisers have some simpler solutions.  They havent been challenged yet. &lt;br /&gt;&lt;br /&gt;My favorite trick is the F5 key.  When an add is displayed, a cookie is usualy saved that says you have seen the add (or they track it another way).  What F5 does is reload the page.  Now you are viewing the page a second time and they think you saw the add so they will not show it again.   Either that or they show the add every time and that would get annoying.  Remember F5&lt;br /&gt;&lt;br /&gt;Now that advertisers are switching, I thing spyware and adware will also make the switch.  Imagin browsing windows updates and a free download add appears for you to click on.  You click yes because it is microsofts site.  you system is toast.&lt;br /&gt;Reformat, Reinstall.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110935902791535283?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110935902791535283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110935902791535283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110935902791535283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110935902791535283'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/02/i-can-see-it-now-spyware-introduced.html' title='I can see it now, spyware introduced flash adds'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110931382495816326</id><published>2005-02-25T00:36:00.000-06:00</published><updated>2005-02-25T00:43:44.960-06:00</updated><title type='text'>Spyware, worse than viruses.</title><content type='html'>Its like cancer.  It truly is.  The majority of home user problems that I have to deal with is related to sypware, adware, malware.  Tonight I spent 3 hours with a customer rebuilding his machine.  He was suffering from several problems that just scream spyware.  IE would not work, home page was blank.  Attempting to type in a site failed to connect, then the browser would choke on the spyware inserted failed connection page.  Wen to check network connections and there were none.  I tried to add one and the needed service was not started.&lt;br /&gt;&lt;br /&gt;Ok, that last one was odd.  Every service was set to disabled and none of them were running.  I had never seen that before.  Trying to enable or start any of them resulted in a unhelpfull error message.  I had already planned on rebuilding, so I quit trying to fix it. &lt;br /&gt;Format, Reinstall.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110931382495816326?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110931382495816326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110931382495816326' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110931382495816326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110931382495816326'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/02/spyware-worse-than-viruses.html' title='Spyware, worse than viruses.'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110931418398723457</id><published>2005-02-25T00:08:00.000-06:00</published><updated>2005-02-25T00:49:43.986-06:00</updated><title type='text'>spyware, at what point do you give up?</title><content type='html'>I was working on this machine that was so infected, evey time I went to a new webpage, 3 more IE windows would open.  It a good thing I knew what I was looking for.  ActiveX controls tried to install twice on my way.  After finaly downloading a spyware cleaner and installing it, then scanning and finding 45 threats.  I cleared them, rescanned and found 3 more.  Those 3 kept comming back.  I tried to kill the related process, but it would just start up again.  I tried several trick and the google results had way too many steps.  After I finialy cleared all the threats, I still had browser popups.  I gave up after 1 1/2 hours. &lt;br /&gt;Format, Reinstall&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110931418398723457?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110931418398723457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110931418398723457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110931418398723457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110931418398723457'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/02/spyware-at-what-point-do-you-give-up.html' title='spyware, at what point do you give up?'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110893985293702610</id><published>2005-02-20T16:33:00.000-06:00</published><updated>2005-02-20T16:50:52.940-06:00</updated><title type='text'>Blog with content ...</title><content type='html'>I am experimenting with my 2 new blogs. One will be "advertised" and the other will be invisible. The &lt;a href="http://antispyware.blogspot.com"&gt;antispyware&lt;/a&gt; blog is the one I find most interesting. As I find topics and post them, I leave comments on the target site that link back to my blog (if commenting is available). The other one will just get the content. After a few days of minimal work, I have gotten 12 visitors to the &lt;a href="http://antispyware.blogspot.com"&gt;antispyware&lt;/a&gt; blog and 0 to the other one.&lt;br /&gt;&lt;br /&gt;As I am looking for good antispyware content, I find other content relating to spam, antivirus, and security. I am tempted to post links to them to help raise their search rankings. But I am making my blogs to narrow.&lt;br /&gt;&lt;br /&gt;Here is one such blog that deserves more attention &lt;a href="http://www.annelisabeth.com/blog/"&gt;Ann Elisabeth (spam huntress)&lt;/a&gt;, she has some excellent blog Spam related posts.&lt;br /&gt;&lt;a href="http://www.annelisabeth.com/pc/pc17.htm"&gt;http://www.annelisabeth.com/pc/pc17.htm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.annelisabeth.com/blog/archives/000314.html#more"&gt;http://www.annelisabeth.com/blog/archives/000314.html#more&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110893985293702610?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110893985293702610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110893985293702610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110893985293702610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110893985293702610'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/02/blog-with-content.html' title='Blog with content ...'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110843340265610010</id><published>2005-02-14T20:04:00.000-06:00</published><updated>2005-02-14T20:10:02.656-06:00</updated><title type='text'>Hot Topics</title><content type='html'>I just launched two new blogs. One is a subject that I run into all the time.  &lt;a href="http://antispyware.blogspot.com"&gt;antipyware&lt;/a&gt;.  The other is just interesting at the moment. &lt;a href="http://0daynews.blogspot.com"&gt;North Korea's Nukes&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I am constantly dealing with &lt;a href="http://antispyware.blogspot.com"&gt;spyware&lt;/a&gt;.  Either from users at work or from friends and family.  It has gotten out of control and my quick tricks no longer work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110843340265610010?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110843340265610010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110843340265610010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110843340265610010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110843340265610010'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/02/hot-topics.html' title='Hot Topics'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110785355419518807</id><published>2005-02-08T02:46:00.000-06:00</published><updated>2005-02-08T03:05:54.196-06:00</updated><title type='text'>Every problem is a nail</title><content type='html'>When your only tool is a hammer, why do all your problems look like nails. In response to my last post, I think XML is my hammer. I do feel that it was a creative solution that in the end has not saved me much work. But the problem set I was working with was more fun. It had a freshness to it that database updates no longer have.&lt;br /&gt;&lt;br /&gt;At one time, I wanted to use XML for just about everything. I realize when its useful or over kill. Programming projects like my survey generator/processor could be heavy in code, but it is a tiny project mostly XML and XSL.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110785355419518807?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110785355419518807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110785355419518807' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110785355419518807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110785355419518807'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/02/every-problem-is-nail.html' title='Every problem is a nail'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110785236107521997</id><published>2005-02-08T01:29:00.000-06:00</published><updated>2005-02-08T02:46:01.076-06:00</updated><title type='text'>Creative Solutions</title><content type='html'>A little while ago I got a request to build a simple survey. It was one page with about 10 questions. Before I started, I realized it was just as easy to write a generic survey processor then to fully code the survey. Each new survey gives me time to work on the generic processor instead of manually building surveys. Different requirements gives me a new set of features.&lt;br /&gt;&lt;br /&gt;My generic processor takes input from any web form and wraps it up with XML. All I do is add the form elements and let the processor do the rest. This method works really well for most studies.&lt;br /&gt;&lt;br /&gt;I am currently working on building 5 questionnaires. Two of then have over 100 questions and all the questions are free form fields. The reporting requirements are completely different from just handing over an excel spreadsheet. Yet again I found myself writing a generic report processor and with that ground work out of the way, I can also generate the survey.&lt;br /&gt;&lt;br /&gt;If I put all the survey questions in a XML file, I can generate the surveys and generate results inline with the original questions. This sounds overly complicated, but it is very simple to implement with XML, XSL, CSS, and a little server side script.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110785236107521997?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110785236107521997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110785236107521997' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110785236107521997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110785236107521997'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/02/creative-solutions.html' title='Creative Solutions'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110611627433986656</id><published>2005-01-19T01:31:00.000-06:00</published><updated>2005-01-20T00:51:21.713-06:00</updated><title type='text'>Orbyk - Point of contact</title><content type='html'>The development of Orbyk is underway. The visuals are fairly raw but I have gotten collision detection to work. Calculating point of contact for the rebound was another story.&lt;br /&gt;&lt;br /&gt;It took several attempts to get it right and I am still tweaking it. I spent too much time figuring out complicated math that when it did work, it still didn't help me (but I still needed to do it to know that it would not work). I had one solution that worked well at very slow speeds. It turns out that the closer to the objects edge the detected collision was, the more accurate the calculation was. Once I realized that, after detecting a collision, I would slowly back the object up until it almost didn't register the collision and then did the calculation.&lt;br /&gt;&lt;br /&gt;Some collisions that are exactly on the edge or corner could be calculated wrong. I have been too lazy to correct it at the moment ( When I make the main shape a sphere instead of a cube, it will have to change), So I added rebound validation. If I detect a rebound off of a side, I verify that another block is not resting up against that side. If a block does exist to that side, then the calculation was an edge case and was wrong.&lt;br /&gt;&lt;br /&gt;I had it working beautifully until I added user input and decided that I was representing speed and direction in a poor way. In the process of correcting movement, I had to revisit my collision and rebound logic.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110611627433986656?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110611627433986656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110611627433986656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110611627433986656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110611627433986656'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/01/orbyk-point-of-contact.html' title='Orbyk - Point of contact'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110559984570173611</id><published>2005-01-13T01:34:00.000-06:00</published><updated>2005-01-13T01:04:05.700-06:00</updated><title type='text'>Orbyk</title><content type='html'>Orbyk was a PocketPC game that I wrote in college. It is like the game breakout, except upside down and in 3D. The view of the game is directly over the top of the game area so you see the ball bounce up towards you and then fall back down to the floor. The bricks are layed flat on the floor and are not stacked. The paddle was removed. To move the ball, you would use the stylus to give the ball spin in the direction that you wanted the ball to go. When it would move in the new direction when it hit the floor. So you had to think one bounce in advance.&lt;br /&gt;&lt;br /&gt;The 3D part was simulated. The walls and bricks were designed to look like they have depth. The ball was rendered on the fly. It was like a 4 colored beach ball. The colors made the spin easy to see. We also shaded it to give it more depth.&lt;br /&gt;&lt;br /&gt;The rendering was all done manually. We worked directly with the raw display memory. All of our images, tiles, and fonts were hand crafted in NxN arrays, one RRGGBB hex pixel at a time.&lt;br /&gt;&lt;br /&gt;Redrawing the whole screen would tear. You could see the rip on the display if we cycled all the colors. To account for this, the only time we would redraw the whole display was at state changes ( menus, pause, or lost and gained focus). The ball was in constant motion. We rendered the ball directly over the existing seen and rubbed out only what was left of the ball from the seen before. We tried clearing the ball before drawing it again, but we could see it rip each frame. The ball rendering was optimized as much as possible.&lt;br /&gt;&lt;br /&gt;It was a very addictive game and it quickly ran the battery out on my PocetPC every chance it got.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110559984570173611?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110559984570173611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110559984570173611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110559984570173611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110559984570173611'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2005/01/orbyk.html' title='Orbyk'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-110368595640609056</id><published>2004-12-21T20:59:00.000-06:00</published><updated>2004-12-21T21:25:56.406-06:00</updated><title type='text'>Invisible Walls</title><content type='html'>I hate running into invisible walls.  In my apartment we have a hallway that runs from the livingroom to the bedroom.  I have lived here for several months and use that hall regularly.  Then for no apparent reason, I can not walk down that hall any more.  I can see then floor and the door to the bedroom.  And google is no help.  Searching for "cannot walk down hallway" returns 273,000 results that don't help me.  &lt;br /&gt;&lt;br /&gt;finally after spending the day trying to get down that hall, I discovered it was a invisible wall.  I know it was not there before because I walked down it yesterday.  Now that I know it is a wall I can remove it.  Problem solved.&lt;br /&gt;&lt;br /&gt;When I find these invisible walls I almost scream. My blood boils.  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-110368595640609056?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/110368595640609056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=110368595640609056' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110368595640609056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/110368595640609056'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2004/12/invisible-walls.html' title='Invisible Walls'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8683693.post-109755900590254693</id><published>2004-10-11T17:57:00.000-05:00</published><updated>2004-10-12T00:30:05.903-05:00</updated><title type='text'>Opening comments</title><content type='html'>My reasons for starting this blog is two fold. I want to record some of the programming projects I have worked on in the past. I also want to share my projects and thoughts with potential recruiters. So in a way, this is a type of resume.&lt;br /&gt;&lt;br /&gt;Before I start talking about my programming projects, I should share a little bit about myself. I grew up in a small town in Nebraska. One of those small towns that has only one school. A place where everyone knows your name if you play sports.&lt;br /&gt;&lt;br /&gt;I had an interest in computers and quickly became the computer guy. They had me running the lab, helping teachers post grades, teaching others programming, and the superintendent pulled me out of class to fix his home computer. I also ran a computer help ad in the local paper.&lt;br /&gt;&lt;br /&gt;Then I was off to college. Computer science at the University of Nebraska. I wasn't ready for college when I went, but it was a valuable experience for me. The computer science classes were my favorite, go figure. I was able to work on several personal projects that got me where I am today.&lt;br /&gt;&lt;br /&gt;College is also where I met my wife. I now work for a department at the university and live here in Lincoln. We are about to move into a larger apartment because we are expecting our first child in may. That is my next big adventure.&lt;br /&gt;&lt;br /&gt;Now you have seen a glimpse of my history. It is just a small snapshots of my life.  As I talk about the things I have worked on you will see yet another glimpse of who I am and how I think.  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8683693-109755900590254693?l=kevinmarquette.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevinmarquette.blogspot.com/feeds/109755900590254693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8683693&amp;postID=109755900590254693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/109755900590254693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8683693/posts/default/109755900590254693'/><link rel='alternate' type='text/html' href='http://kevinmarquette.blogspot.com/2004/10/opening-comments.html' title='Opening comments'/><author><name>KevMar</name><uri>http://www.blogger.com/profile/16389030891301082770</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/-mZ5p-qSN8QU/TfPcohbWrYI/AAAAAAAAAJM/veRJbIE4oQk/s220/223497_1988463867414_1117832707_2440907_4590500_n.jpg'/></author><thr:total>0</thr:total></entry></feed>
