<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" version="2.0">
  <channel>
    <title>bAdmArk - Microsoft</title>
    <link>http://www.badmark.com/</link>
    <description>Husband, father, technologist, musician</description>
    <language>en-us</language>
    <copyright>bad mark</copyright>
    <lastBuildDate>Tue, 17 Jul 2007 05:30:42 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>badmark@gmail.com</managingEditor>
    <webMaster>badmark@gmail.com</webMaster>
    <item>
      <trackback:ping>http://www.badmark.com/Trackback.aspx?guid=f4cc0abc-b933-410f-9b96-6159ff5d29f9</trackback:ping>
      <pingback:server>http://www.badmark.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.badmark.com/PermaLink,guid,f4cc0abc-b933-410f-9b96-6159ff5d29f9.aspx</pingback:target>
      <dc:creator>bAdmArk</dc:creator>
      <wfw:comment>http://www.badmark.com/CommentView,guid,f4cc0abc-b933-410f-9b96-6159ff5d29f9.aspx</wfw:comment>
      <wfw:commentRss>http://www.badmark.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f4cc0abc-b933-410f-9b96-6159ff5d29f9</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <font face="Arial">It's been a while since
I needed to work with zip files, so when I found myself writing a small routine that
periodically downloads and processes a Zip file, I need a quick and cheap (note: by
cheap I mean free) method to decompress said file. Of course there are countless number
of commercial components available, but most come with a hefty price tag. All I need
is to extract a file. Wait, doesn't Windows include the ability to work with compressed
folders? 
<br /><br />
Sure enough, Shell32 (Found in C:\Windows\System32\Shell32.dll) offers methods to
extract and create Zips! So with a reference to Microsoft Shell and Automation Controls
(Which will create an Interop assembly, Interop.Shell32.Dll), and some handy Googling,
I was able to create a small class with 2 methods:<br /></font>
        <ul>
          <li>
            <font face="Arial">UnzipFileTo(<i>zipPath</i>, <i>pathtoExtract</i>): Extracts files
in <i>zipPath </i>to <i>pathtoExtract</i></font>
          </li>
          <li>
            <p>
              <font face="Arial">
                <font color="#0000ff">
                  <font color="#000000">ZipFolder(<i>srcfolderString</i>, <i>dstfolderString</i>):
Compresses all files in <i>srcFolderString </i>to <i>dstfolderString</i></font>
                </font>
              </font>
            </p>
          </li>
        </ul>
        <font face="Arial">
          <b>Note: </b>This method does display a Progress Dialog (Even though
the proper options have been passed to the CopyHere method), so make sure to handle
existing files and paths prior to using.<br /><br />
Below you will find this class in both Visual Basic and C Sharp compatible with Framework
2.0 and above.<br /><br />
Comments and suggestions always welcome!<br /><br />
Visual Basic:<br /><br /></font>
        <address>
          <font color="#0000ff" face="Arial">Imports System.IO</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">Imports Shell32</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">Public Class ZipControl</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">    Public ErrorMsg As
String = ""</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">    Public Function UnzipFileTo(ByVal
zipPath As String, ByVal pathtoExtract As String) As Boolean</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
Try</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Dim sc As New Shell32.ShellClass()</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Dim SrcFlder As Shell32.Folder = sc.NameSpace(zipPath)</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Dim DestFlder As Shell32.Folder = sc.NameSpace(pathtoExtract)</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Dim items As Shell32.FolderItems = SrcFlder.Items()</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
DestFlder.CopyHere(items, 4 + 20 + 10 + 200)</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
Catch ex As Exception</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Me.ErrorMsg = ex.Message</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Return False</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
End Try</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
Return True</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">    End Function</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">    Public Function ZipFolder(ByVal
srcfolderString As String, ByVal dstfolderString As String) As Boolean</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
Try</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Dim fileContents() As Byte = {80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0}</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
File.WriteAllBytes(dstfolderString, fileContents)</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Dim oShell As New Shell32.ShellClass</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Dim oFolderSrc As Shell32.Folder</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Dim oFolderDst As Shell32.Folder</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Dim oFolderItems As Shell32.FolderItems</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
oFolderSrc = oShell.NameSpace(srcfolderString)</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
oFolderDst = oShell.NameSpace(dstfolderString)</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
oFolderItems = oFolderSrc.Items()</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
oFolderDst.CopyHere(oFolderItems, 4 + 20 + 10 + 200)</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
Catch ex As Exception</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Me.ErrorMsg = ex.Message</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Return False</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
End Try</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
Return True</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">    End Function</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">End Class</font>
        </address>
        <font face="Arial">
          <br />
C#:<br /><br /></font>
        <address>
          <font color="#0000ff" face="Arial">using System;</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">using Shell32;</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">using System.IO;</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">public class ZipControl</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">{</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">    public string ErrorMsg
= "";</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">    public bool UnzipFileTo(string
zipPath, string pathtoExtract)</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">    {</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
try</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
{</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Shell32.ShellClass sc = new Shell32.ShellClass();</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Shell32.Folder SrcFlder = sc.NameSpace(zipPath);</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Shell32.Folder DestFlder = sc.NameSpace(pathtoExtract);</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Shell32.FolderItems items = SrcFlder.Items();</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
DestFlder.CopyHere(items, 4 + 20 + 10 + 200);</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
}</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
catch (Exception ex)</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
{</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
this.ErrorMsg = ex.Message;</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
return false;</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
}</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
return true;</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">    }</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">    public bool ZipFolder(string
srcfolderString, string dstfolderString)</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">    {</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
try</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
{</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
byte[] fileContents = {80, 75, 5, 6, 0, 0, 0, 0, 0, 0, </font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, </font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
    0, 0};</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
File.WriteAllBytes(dstfolderString, fileContents);</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Shell32.ShellClass oShell = new Shell32.ShellClass();</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Shell32.Folder oFolderSrc;</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Shell32.Folder oFolderDst;</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
Shell32.FolderItems oFolderItems;</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
oFolderSrc = oShell.NameSpace(srcfolderString);</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
oFolderDst = oShell.NameSpace(dstfolderString);</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
oFolderItems = oFolderSrc.Items();</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
oFolderDst.CopyHere(oFolderItems, 4 + 20 + 10 + 200);</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
}</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
catch (Exception ex)</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
{</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
this.ErrorMsg = ex.Message;</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">           
return false;</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
}</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">       
return true;</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">    }</font>
        </address>
        <address>
          <font color="#0000ff" face="Arial">}</font>
        </address>
        <font face="Arial">
          <br />
        </font>
        <img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=f4cc0abc-b933-410f-9b96-6159ff5d29f9" />
      </body>
      <title>Compress and decompress a Zip file in .NET in under 50 lines</title>
      <guid isPermaLink="false">http://www.badmark.com/PermaLink,guid,f4cc0abc-b933-410f-9b96-6159ff5d29f9.aspx</guid>
      <link>http://www.bAdmArk.com/Compress+And+Decompress+A+Zip+File+In+NET+In+Under+50+Lines.aspx</link>
      <pubDate>Tue, 17 Jul 2007 05:30:42 GMT</pubDate>
      <description>&lt;font face="Arial"&gt;It's been a while since I needed to work with zip files, so when
I found myself writing a small routine that periodically downloads and processes a
Zip file, I need a quick and cheap (note: by cheap I mean free) method to decompress
said file. Of course there are countless number of commercial components available,
but most come with a hefty price tag. All I need is to extract a file. Wait, doesn't
Windows include the ability to work with compressed folders? 
&lt;br&gt;
&lt;br&gt;
Sure enough, Shell32 (Found in C:\Windows\System32\Shell32.dll) offers methods to
extract and create Zips! So with a reference to Microsoft Shell and Automation Controls
(Which will create an Interop assembly, Interop.Shell32.Dll), and some handy Googling,
I was able to create a small class with 2 methods:&lt;br&gt;
&lt;/font&gt; 
&lt;ul&gt;
&lt;li&gt;
&lt;font face="Arial"&gt;UnzipFileTo(&lt;i&gt;zipPath&lt;/i&gt;, &lt;i&gt;pathtoExtract&lt;/i&gt;): Extracts files
in &lt;i&gt;zipPath &lt;/i&gt;to &lt;i&gt;pathtoExtract&lt;/i&gt;&lt;/font&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
&lt;font face="Arial"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#000000"&gt;ZipFolder(&lt;i&gt;srcfolderString&lt;/i&gt;, &lt;i&gt;dstfolderString&lt;/i&gt;):
Compresses all files in &lt;i&gt;srcFolderString &lt;/i&gt;to &lt;i&gt;dstfolderString&lt;/i&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;font face="Arial"&gt;&lt;b&gt;Note: &lt;/b&gt;This method does display a Progress Dialog (Even though
the proper options have been passed to the CopyHere method), so make sure to handle
existing files and paths prior to using.&lt;br&gt;
&lt;br&gt;
Below you will find this class in both Visual Basic and C Sharp compatible with Framework
2.0 and above.&lt;br&gt;
&lt;br&gt;
Comments and suggestions always welcome!&lt;br&gt;
&lt;br&gt;
Visual Basic:&lt;br&gt;
&lt;br&gt;
&lt;/font&gt; 
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;Imports System.IO&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;Imports Shell32&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;Public Class ZipControl&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public ErrorMsg As
String = ""&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Function UnzipFileTo(ByVal
zipPath As String, ByVal pathtoExtract As String) As Boolean&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Try&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Dim sc As New Shell32.ShellClass()&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Dim SrcFlder As Shell32.Folder = sc.NameSpace(zipPath)&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Dim DestFlder As Shell32.Folder = sc.NameSpace(pathtoExtract)&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Dim items As Shell32.FolderItems = SrcFlder.Items()&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
DestFlder.CopyHere(items, 4 + 20 + 10 + 200)&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Catch ex As Exception&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Me.ErrorMsg = ex.Message&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Return False&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
End Try&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Return True&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Function ZipFolder(ByVal
srcfolderString As String, ByVal dstfolderString As String) As Boolean&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Try&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Dim fileContents() As Byte = {80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0}&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
File.WriteAllBytes(dstfolderString, fileContents)&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Dim oShell As New Shell32.ShellClass&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Dim oFolderSrc As Shell32.Folder&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Dim oFolderDst As Shell32.Folder&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Dim oFolderItems As Shell32.FolderItems&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
oFolderSrc = oShell.NameSpace(srcfolderString)&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
oFolderDst = oShell.NameSpace(dstfolderString)&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
oFolderItems = oFolderSrc.Items()&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
oFolderDst.CopyHere(oFolderItems, 4 + 20 + 10 + 200)&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Catch ex As Exception&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Me.ErrorMsg = ex.Message&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Return False&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
End Try&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Return True&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;End Class&lt;/font&gt;
&lt;/address&gt;
&lt;font face="Arial"&gt;
&lt;br&gt;
C#:&lt;br&gt;
&lt;br&gt;
&lt;/font&gt; 
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;using System;&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;using Shell32;&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;using System.IO;&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;public class ZipControl&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;{&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string ErrorMsg
= "";&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool UnzipFileTo(string
zipPath, string pathtoExtract)&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
try&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Shell32.ShellClass sc = new Shell32.ShellClass();&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Shell32.Folder SrcFlder = sc.NameSpace(zipPath);&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Shell32.Folder DestFlder = sc.NameSpace(pathtoExtract);&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Shell32.FolderItems items = SrcFlder.Items();&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
DestFlder.CopyHere(items, 4 + 20 + 10 + 200);&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
catch (Exception ex)&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
this.ErrorMsg = ex.Message;&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
return false;&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
return true;&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool ZipFolder(string
srcfolderString, string dstfolderString)&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
try&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
byte[] fileContents = {80, 75, 5, 6, 0, 0, 0, 0, 0, 0, &lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, &lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0, 0};&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
File.WriteAllBytes(dstfolderString, fileContents);&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Shell32.ShellClass oShell = new Shell32.ShellClass();&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Shell32.Folder oFolderSrc;&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Shell32.Folder oFolderDst;&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Shell32.FolderItems oFolderItems;&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
oFolderSrc = oShell.NameSpace(srcfolderString);&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
oFolderDst = oShell.NameSpace(dstfolderString);&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
oFolderItems = oFolderSrc.Items();&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
oFolderDst.CopyHere(oFolderItems, 4 + 20 + 10 + 200);&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
catch (Exception ex)&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
this.ErrorMsg = ex.Message;&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
return false;&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
return true;&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;
&lt;/address&gt;
&lt;address&gt;&lt;font color="#0000ff" face="Arial"&gt;}&lt;/font&gt;
&lt;/address&gt;
&lt;font face="Arial"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=f4cc0abc-b933-410f-9b96-6159ff5d29f9" /&gt;</description>
      <comments>http://www.badmark.com/CommentView,guid,f4cc0abc-b933-410f-9b96-6159ff5d29f9.aspx</comments>
      <category>.NET;Microsoft;Software;Tech Tips;technology</category>
    </item>
    <item>
      <trackback:ping>http://www.badmark.com/Trackback.aspx?guid=92d3d4f9-66ce-4a6c-83c8-86b9fb0d55db</trackback:ping>
      <pingback:server>http://www.badmark.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.badmark.com/PermaLink,guid,92d3d4f9-66ce-4a6c-83c8-86b9fb0d55db.aspx</pingback:target>
      <dc:creator>bAdmArk</dc:creator>
      <wfw:comment>http://www.badmark.com/CommentView,guid,92d3d4f9-66ce-4a6c-83c8-86b9fb0d55db.aspx</wfw:comment>
      <wfw:commentRss>http://www.badmark.com/SyndicationService.asmx/GetEntryCommentsRss?guid=92d3d4f9-66ce-4a6c-83c8-86b9fb0d55db</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Last year I decided to upgrade my laptop (An Averatec with a 15" screen), for something
more lightweight. I had seen several ultra portables which made me drool! After some
research and bargain shopping, I came across a nice unit, the HP Compaq NC4010 (<a href="http://reviews.cnet.com/HP_Compaq_Business_Notebook_nc4010_Pentium_M_735_1_7_GHz_12_1_TFT/4505-3121_7-30890207.html?tag=pdtl-list">CNET's
Review</a>). One of the selling points of the unit, was that it came "Windows Vista
Ready". I was certain I would be making the move to the new operating system as soon
as it launched, so I figured I may as well purchase a notebook which will be ready
for the future. This option actually overweighed the short battery life (I purchased
an extra battery, which doesn't affect its portability much).
</p>
        <p>
Well, after much waiting, Vista finally arrived. I eargely loaded the OS unto
my trusty nc4010, only to find that the video drivers were not found, all that was
listed in Device Manager was a Standard VGA Adapter! What the truck? After scouring <a href="http://support.hp.com">HP's
Support web site</a> I was unable to find Vista drivers. After several calls
to HP's support center and hours wasted on hold, I've been told that HP does not support
Windows Vista on the NC4010!!!
</p>
        <p>
Excuse me? So this "Windows Vista Ready" sticker on the machine and the packaging
means absolutely what? It was my impression that false advertising was considered
a crime in the United States? Well, I guess from <a href="http://www.msnbc.msn.com/id/16640631/">HP's
executive actions</a>, crime is not a concern. Well, I guess it's back to XP for now,
800 X 600 at 8 Bit just doesn't do Vista justice.
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=92d3d4f9-66ce-4a6c-83c8-86b9fb0d55db" />
      </body>
      <title>Windows Vista Ready? My A$$!</title>
      <guid isPermaLink="false">http://www.badmark.com/PermaLink,guid,92d3d4f9-66ce-4a6c-83c8-86b9fb0d55db.aspx</guid>
      <link>http://www.bAdmArk.com/Windows+Vista+Ready+My+A.aspx</link>
      <pubDate>Thu, 01 Feb 2007 04:25:14 GMT</pubDate>
      <description>&lt;p&gt;
Last year I decided to upgrade my laptop (An Averatec with a 15" screen), for something
more lightweight. I had seen several ultra portables which made me drool! After some
research and bargain shopping, I came across a nice unit, the HP Compaq NC4010 (&lt;a href="http://reviews.cnet.com/HP_Compaq_Business_Notebook_nc4010_Pentium_M_735_1_7_GHz_12_1_TFT/4505-3121_7-30890207.html?tag=pdtl-list"&gt;CNET's
Review&lt;/a&gt;). One of the selling points of the unit, was that it came "Windows Vista
Ready". I was certain I would be making the move to the new operating system as soon
as it launched, so I figured I may as well purchase a notebook which will be ready
for the future. This option actually overweighed the short battery life (I purchased
an extra battery, which doesn't affect its portability much).
&lt;/p&gt;
&lt;p&gt;
Well, after much waiting, Vista finally arrived. I eargely loaded the OS&amp;nbsp;unto
my trusty nc4010, only to find that the video drivers were not found, all that was
listed in Device Manager was a Standard VGA Adapter! What the truck? After scouring &lt;a href="http://support.hp.com"&gt;HP's
Support web site&lt;/a&gt;&amp;nbsp;I was unable to find Vista drivers. After several calls
to HP's support center and hours wasted on hold, I've been told that HP does not support
Windows Vista on the NC4010!!!
&lt;/p&gt;
&lt;p&gt;
Excuse me? So this "Windows Vista Ready" sticker on the machine and the packaging
means absolutely what? It was my impression that false advertising was considered
a crime in the United States? Well, I guess from &lt;a href="http://www.msnbc.msn.com/id/16640631/"&gt;HP's
executive actions&lt;/a&gt;, crime is not a concern. Well, I guess it's back to XP for now,
800 X 600 at 8 Bit just doesn't do Vista justice.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=92d3d4f9-66ce-4a6c-83c8-86b9fb0d55db" /&gt;</description>
      <comments>http://www.badmark.com/CommentView,guid,92d3d4f9-66ce-4a6c-83c8-86b9fb0d55db.aspx</comments>
      <category>Business;Funny;Microsoft;technology</category>
    </item>
    <item>
      <trackback:ping>http://www.badmark.com/Trackback.aspx?guid=2c7d428e-8a35-4372-9b66-06f0cd4f86b0</trackback:ping>
      <pingback:server>http://www.badmark.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.badmark.com/PermaLink,guid,2c7d428e-8a35-4372-9b66-06f0cd4f86b0.aspx</pingback:target>
      <dc:creator>bAdmArk</dc:creator>
      <wfw:comment>http://www.badmark.com/CommentView,guid,2c7d428e-8a35-4372-9b66-06f0cd4f86b0.aspx</wfw:comment>
      <wfw:commentRss>http://www.badmark.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2c7d428e-8a35-4372-9b66-06f0cd4f86b0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So I finally got around to setting up my SBS 2003 server up for Mobile. I installed <a href="http://www.microsoft.com/technet/prodtechnol/exchange/downloads/2003/sp2/download.mspx">Exchange
2003 Service Pack 2</a> (Without the need for a reboot I might add) which
went quite smoothly and added some extra functionality to my Mobile Settings in System
Manager.
</p>
        <p>
          <img src="http://badmark.com/content/binary/Exchange2003SP2.gif" border="0" />
        </p>
        <p>
This service pack seems to give you a lot more features for OTA programming, very
nice.
</p>
        <p>
So I decided to plug in my trusty Motorola Q (In all truths, this is my Q 2.0, my
first one took a bump or 2 too many and had to be recycled at the local Verizon store;
boy do I hate dealing with them...). First thing is first, I tried to install the
root certificate for SSL from my domain to my Q. Nope! Continued to receive the
error "<strong>Security permission was insufficient to update your device</strong>"...
Argh.....
</p>
        <p>
So after some research and not much from help from Verizon's Data Support team (What
a joke!), this is what I came up with. Note, this also works if your server's SSL
root server is GoDaddy. <a href="https://certificates.starfieldtech.com/Repository.go">Download
GoDaddy's Root Certificate</a>.
</p>
        <p>
Steps to Add a Root Certificate to a Motorola Q (or other Windows Mobile 5 Device)
- Please note <strong>MODIFYING YOUR REGISTRY CAN BE HARMFUL TO YOUR DEVICES' HEALTH</strong></p>
        <ol>
          <li>
Download and install Windows Mobile Registry Editor, I tried several, the shining
star by far is <a href="http://www.resco.net/smartphone/explorer/">Resco Explorer</a>,
the registry module is included with the trial download. 
</li>
          <li>
Start "Resco Registry" 
</li>
          <li>
Navigate to HKLM\Security\Policies\Policies 
</li>
          <li>
Change these 3 registry keys: 
<br />
00001001 - change value from 2 to 1<br />
00001005 - change value from 16 to 40<br />
000010017 - change value from 128 to 144 
</li>
          <li>
Close Registry Editor</li>
        </ol>
        <p>
Now you can install you .CER certificate file, and SSL to your Exchange Server will
work as needed.
</p>
        <img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=2c7d428e-8a35-4372-9b66-06f0cd4f86b0" />
      </body>
      <title>Moto Q may I use my SSL please?</title>
      <guid isPermaLink="false">http://www.badmark.com/PermaLink,guid,2c7d428e-8a35-4372-9b66-06f0cd4f86b0.aspx</guid>
      <link>http://www.bAdmArk.com/Moto+Q+May+I+Use+My+SSL+Please.aspx</link>
      <pubDate>Wed, 25 Oct 2006 17:10:10 GMT</pubDate>
      <description>&lt;p&gt;
So I finally got around to setting up my SBS 2003 server up for Mobile.&amp;nbsp;I installed &lt;a href="http://www.microsoft.com/technet/prodtechnol/exchange/downloads/2003/sp2/download.mspx"&gt;Exchange
2003 Service Pack 2&lt;/a&gt;&amp;nbsp;(Without the need for a reboot I might add)&amp;nbsp;which
went quite smoothly and added some extra functionality to my Mobile Settings in System
Manager.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://badmark.com/content/binary/Exchange2003SP2.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
This service pack seems to give you a lot more features for OTA programming, very
nice.
&lt;/p&gt;
&lt;p&gt;
So I decided to plug in my trusty Motorola Q (In all truths, this is my Q 2.0, my
first one took a bump or 2 too many and had to be recycled at the local Verizon store;
boy do I hate dealing with them...). First thing is first, I tried to install the
root certificate for SSL from my domain to my Q.&amp;nbsp;Nope! Continued to receive the
error "&lt;strong&gt;Security permission was insufficient to update your device&lt;/strong&gt;"...
Argh.....
&lt;/p&gt;
&lt;p&gt;
So after some research and not much from help from Verizon's Data Support team (What
a joke!), this is what I came up with. Note, this also works if your server's SSL
root server is GoDaddy. &lt;a href="https://certificates.starfieldtech.com/Repository.go"&gt;Download
GoDaddy's Root Certificate&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Steps to Add a Root Certificate to a Motorola Q (or other Windows Mobile 5 Device)
- Please note &lt;strong&gt;MODIFYING YOUR REGISTRY CAN BE HARMFUL TO YOUR DEVICES' HEALTH&lt;/strong&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Download and install Windows Mobile Registry Editor, I&amp;nbsp;tried several, the shining
star by far is &lt;a href="http://www.resco.net/smartphone/explorer/"&gt;Resco Explorer&lt;/a&gt;,
the registry module is included with the trial download. 
&lt;li&gt;
Start "Resco Registry" 
&lt;li&gt;
Navigate to HKLM\Security\Policies\Policies 
&lt;li&gt;
Change these 3 registry keys: 
&lt;br&gt;
00001001 - change value from&amp;nbsp;2 to 1&lt;br&gt;
00001005 - change value from 16 to 40&lt;br&gt;
000010017 - change value from 128 to 144 
&lt;li&gt;
Close Registry Editor&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Now you can install you .CER certificate file, and SSL to your Exchange Server will
work as needed.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=2c7d428e-8a35-4372-9b66-06f0cd4f86b0" /&gt;</description>
      <comments>http://www.badmark.com/CommentView,guid,2c7d428e-8a35-4372-9b66-06f0cd4f86b0.aspx</comments>
      <category>Exchange;Microsoft;Motorola Q;Software</category>
    </item>
    <item>
      <trackback:ping>http://www.badmark.com/Trackback.aspx?guid=0dc77c97-8cba-4477-a35b-154f83a7d3dd</trackback:ping>
      <pingback:server>http://www.badmark.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.badmark.com/PermaLink,guid,0dc77c97-8cba-4477-a35b-154f83a7d3dd.aspx</pingback:target>
      <dc:creator>bAdmArk</dc:creator>
      <wfw:comment>http://www.badmark.com/CommentView,guid,0dc77c97-8cba-4477-a35b-154f83a7d3dd.aspx</wfw:comment>
      <wfw:commentRss>http://www.badmark.com/SyndicationService.asmx/GetEntryCommentsRss?guid=0dc77c97-8cba-4477-a35b-154f83a7d3dd</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In continuing with numerous requests for Terminal Services / Remote Desktop tips;
</p>
        <p>
This week's tip: How to enable Remote Desktop on a remote PC. 
</p>
        <p>
If you've ever managed a Microsoft Windows based network, I'm going to guess you've
had a situation where you needed to connect to a remote PC on a network which you
have access to, but for one reason or another you never enabled Remote Desktop. If
you have access to the machine in question (From within the local network, you must
have access to conduct RPC to the PC) you can enable Remote Desktop using Remote Registry.
</p>
        <ol>
          <li>
Start &gt; Run&gt; Type 'Regedit' 
<br /></li>
          <li>
Browse or type in the name of the computer<br /><br /><img src="http://badmark.com/content/binary/Browse_for_computer.png" border="0" /><br /><font size="1">(Remember this has to be a computer you can browse to by UNC i.e. </font><a href="file://\\computername\"><font size="1">\\computername\</font></a><font size="1">)</font><br /></li>
          <li>
Once connected, Browse to HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server<br /><br /><img src="http://badmark.com/content/binary/fDenyTSConnection.png" border="0" /><br /></li>
          <li>
Set fDenyTSConnection to 0<br /></li>
          <li>
Close Regedit, within a few seconds the PC should start responding to Remote Desktop
Clients</li>
        </ol>
        <p>
P.S.: It's a good thing to check the value TSEnabled, under this same key, and insure
that this is set to 1
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=0dc77c97-8cba-4477-a35b-154f83a7d3dd" />
      </body>
      <title>How to Remotely enable Remote Desktop Connection (RDP) using Computer Manager</title>
      <guid isPermaLink="false">http://www.badmark.com/PermaLink,guid,0dc77c97-8cba-4477-a35b-154f83a7d3dd.aspx</guid>
      <link>http://www.bAdmArk.com/How+To+Remotely+Enable+Remote+Desktop+Connection+RDP+Using+Computer+Manager.aspx</link>
      <pubDate>Tue, 03 Oct 2006 18:19:39 GMT</pubDate>
      <description>&lt;p&gt;
In continuing with numerous requests for Terminal Services / Remote Desktop tips;
&lt;/p&gt;
&lt;p&gt;
This week's tip: How to enable Remote Desktop on a remote PC. 
&lt;/p&gt;
&lt;p&gt;
If you've ever managed a Microsoft Windows based network, I'm going to guess you've
had a situation where you needed to connect to a remote PC on a network which you
have access to, but for one reason or another you never enabled Remote Desktop. If
you have access to the machine in question (From within the local network, you must
have access to conduct RPC to the PC) you can enable Remote Desktop using Remote Registry.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Start &amp;gt; Run&amp;gt; Type 'Regedit' 
&lt;br&gt;
&lt;li&gt;
Browse or type in the name of the computer&lt;br&gt;
&lt;br&gt;
&lt;img src="http://badmark.com/content/binary/Browse_for_computer.png" border=0&gt;
&lt;br&gt;
&lt;font size=1&gt;(Remember this has to be a computer you can browse to by UNC i.e. &lt;/font&gt;&lt;a href="file://\\computername\"&gt;&lt;font size=1&gt;\\computername\&lt;/font&gt;&lt;/a&gt;&lt;font size=1&gt;)&lt;/font&gt;
&lt;br&gt;
&lt;li&gt;
Once connected, Browse to HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server&lt;br&gt;
&lt;br&gt;
&lt;img src="http://badmark.com/content/binary/fDenyTSConnection.png" border=0&gt;
&lt;br&gt;
&lt;li&gt;
Set fDenyTSConnection to 0&lt;br&gt;
&lt;li&gt;
Close Regedit, within a few seconds the PC should start responding to Remote Desktop
Clients&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
P.S.: It's a good thing to check the value TSEnabled, under this same key, and insure
that this is set to 1
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=0dc77c97-8cba-4477-a35b-154f83a7d3dd" /&gt;</description>
      <comments>http://www.badmark.com/CommentView,guid,0dc77c97-8cba-4477-a35b-154f83a7d3dd.aspx</comments>
      <category>Microsoft;Tech Tips;technology;Remote Desktop</category>
    </item>
    <item>
      <trackback:ping>http://www.badmark.com/Trackback.aspx?guid=5a0b691a-5e8b-4805-a245-672b1b43f68b</trackback:ping>
      <pingback:server>http://www.badmark.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.badmark.com/PermaLink,guid,5a0b691a-5e8b-4805-a245-672b1b43f68b.aspx</pingback:target>
      <dc:creator>bAdmArk</dc:creator>
      <wfw:comment>http://www.badmark.com/CommentView,guid,5a0b691a-5e8b-4805-a245-672b1b43f68b.aspx</wfw:comment>
      <wfw:commentRss>http://www.badmark.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5a0b691a-5e8b-4805-a245-672b1b43f68b</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
While delivering a custom DNN (<a href="http://dotnetnuke.com">DotNetNuke</a>) for
a client, we came across a bug in the Events module. Apparantely one of the methods
that passes the dollar amount of a paid event into the method that generates the <a href="http://PAYPAL.COM">PayPal</a> link
carries the dollar sign($) along, so the method essentially goes, $ is not a numeric
so I'll just set the amount to $0.00. Well, that obviously is no good, who wants to
charge nothing for an event? 
</p>
        <p>
So, to make a long story short, through some help from a <a href="http://www.dotnetnuke.com/Community/ForumsDotNetNuke/tabid/795/forumid/20/threadid/68240/scope/posts/Default.aspx">Forum
Posting</a> on DotNetNuke Forums, I was able to fix the module and make a good
client happy.
</p>
        <p>
I've included the link to the fixed module below:
</p>
        <p>
          <a href="http://badmark.com/content/DotNetNuke.Events.fixed.zip">Download Events Module
Fix</a>
        </p>
        <img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=5a0b691a-5e8b-4805-a245-672b1b43f68b" />
      </body>
      <title>DotNetNuke Module Events Total Charges always equal 0</title>
      <guid isPermaLink="false">http://www.badmark.com/PermaLink,guid,5a0b691a-5e8b-4805-a245-672b1b43f68b.aspx</guid>
      <link>http://www.bAdmArk.com/DotNetNuke+Module+Events+Total+Charges+Always+Equal+0.aspx</link>
      <pubDate>Fri, 29 Sep 2006 19:39:11 GMT</pubDate>
      <description>&lt;p&gt;
While delivering a custom DNN (&lt;a href="http://dotnetnuke.com"&gt;DotNetNuke&lt;/a&gt;) for
a client, we came across a bug in the Events module. Apparantely one of the methods
that passes the dollar amount of a paid event into the method that generates the &lt;a href="http://PAYPAL.COM"&gt;PayPal&lt;/a&gt; link
carries the dollar sign($) along, so the method essentially goes, $ is not a numeric
so I'll just set the amount to $0.00. Well, that obviously is no good, who wants to
charge nothing for an event? 
&lt;/p&gt;
&lt;p&gt;
So, to make a long story short, through some help from a &lt;a href="http://www.dotnetnuke.com/Community/ForumsDotNetNuke/tabid/795/forumid/20/threadid/68240/scope/posts/Default.aspx"&gt;Forum
Posting&lt;/a&gt;&amp;nbsp;on DotNetNuke Forums, I was able to fix the module and make a good
client happy.
&lt;/p&gt;
&lt;p&gt;
I've included the link to the fixed module below:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://badmark.com/content/DotNetNuke.Events.fixed.zip"&gt;Download Events Module
Fix&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=5a0b691a-5e8b-4805-a245-672b1b43f68b" /&gt;</description>
      <comments>http://www.badmark.com/CommentView,guid,5a0b691a-5e8b-4805-a245-672b1b43f68b.aspx</comments>
      <category>DotNetNuke;Microsoft;Software;Tech Tips;technology</category>
    </item>
    <item>
      <trackback:ping>http://www.badmark.com/Trackback.aspx?guid=387051a3-9075-40f3-8de1-2a6fdd1d7ec7</trackback:ping>
      <pingback:server>http://www.badmark.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.badmark.com/PermaLink,guid,387051a3-9075-40f3-8de1-2a6fdd1d7ec7.aspx</pingback:target>
      <dc:creator>bAdmArk</dc:creator>
      <wfw:comment>http://www.badmark.com/CommentView,guid,387051a3-9075-40f3-8de1-2a6fdd1d7ec7.aspx</wfw:comment>
      <wfw:commentRss>http://www.badmark.com/SyndicationService.asmx/GetEntryCommentsRss?guid=387051a3-9075-40f3-8de1-2a6fdd1d7ec7</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In continuing with my Remote Desktop tricks (<a href="http://badmark.com/2006/07/31/Who+Did+Not+Close+Their+Remote+Desktop+Connection.aspx">Who
did not close their Remote Desktop Connection</a>) , I thought I'd share another
nugget of information. TSDISCON.exe is a command line tool included in Windows since
2000. With this tool you can disconnect a session from a remote server (Especially
usefull for those times that someone forgot to logout and you keep receiving the maximum
number of connections reached error. 
</p>
        <h3 id="tocHeadRef">
          <span>
            <a id="2">
            </a>
          </span>Description of the TSDISCON Command
</h3>
        <p>
The <strong class="uiterm">tsdiscon</strong> command uses the following syntax: 
</p>
        <div class="indent">
          <b>tsdiscon <var>SessionID</var> | <var>SessionName</var> [/server:<var>ServerName</var>]
/v</b>
        </div>
        <p>
The parameters that are used by the <strong class="uiterm">tsdiscon</strong> command
are: 
<table class="list ul"><tbody><tr><td class="bullet">
•</td><td class="text"><b><var>SessionID</var></b>: Use this parameter to specify the ID of the session that
you want to disconnect. To determine the ID of the session that you want to disconnect,
use the <strong class="uiterm">query session</strong> command. 
</td></tr><tr><td class="bullet">
•</td><td class="text"><b><var>SessionName</var></b>: Use this parameter to specify the name of the session
that you want to disconnect. To determine the name of the session that you want to
disconnect, use the <strong class="uiterm">query session</strong> command.</td></tr><tr><td class="bullet">
•</td><td class="text"><b>/server:<var>ServerName</var></b>: Use this parameter to specify the Terminal Services
server that hosts the session that you want to disconnect. If you omit this parameter,
the current Terminal Services server is specified.</td></tr><tr><td class="bullet">
•</td><td class="text"><b>/v</b>: Use this parameter to display information about the actions that are being
performed.</td></tr></tbody></table><b>NOTE</b>: You can disconnect your own sessions, but if you want to disconnect another
user's session, you must have Full Control access permissions. You cannot disconnect
the console session. 
<br /></p>
        <h3 id="tocHeadRef">
          <span>
            <a id="3">
            </a>
          </span>How to Disconnect a Terminal Services
Session
</h3>
        <p>
This is an example of how to use the <strong class="uiterm">tsdiscon</strong> command
to disconnect a session on the current Terminal Services server: 
<table class="list ol"><tbody><tr><td class="number">
1.</td><td class="text">
In a Terminal Services session, click <b>Start</b>, and then click <b>Run</b>. 
</td></tr><tr><td class="number">
2.</td><td class="text">
Type <span class="userInput">cmd</span>, and then click <b>OK</b>.</td></tr><tr><td class="number">
3.</td><td class="text">
Determine the name or ID of the session that you want to disconnect. To do so, type <span class="userInput">query
session</span>, and then press ENTER. You see a list of information about the sessions
on the current Terminal Services server. The list may be similar to: 
<div class="indent"><pre class="in_text">SESSIONNAME   USERNAME        ID      STATE    TYPE    DEVICE
 console      administrator       0   active   wdcon   
 rdp-tcp                      65536   listen   rdpwd
&gt;rdp-tcp#1    user1               1   active   rdpwd
 rdp-tcp#2    user1               2   active   rdpwd
 rdp-tcp#3    user2               3   active   rdpwd
 rdp-tcp#4    user3               4   disc     rdpwd  
 rdp-tcp#5    user1               5   disc     rdpwd
                                  6   idle
                                  7  idle
						</pre></div>
Note that in this example, the name of the current session is rdp-tcp#1, the session
ID is 1, and it is owned by user1. 
<br /><br /></td></tr><tr><td class="number">
4.</td><td class="text">
To disconnect the current session, type the following line at the command prompt,
and then press ENTER: 
<div class="indent"><span class="userInput">tsdiscon</span></div></td></tr><tr><td class="number">
5.</td><td class="text">
To disconnect session 2 by using the session ID, and to display information about
the disconnect operation, type the following line at the command prompt, and then
press ENTER: 
<div class="indent"><span class="userInput">tsdiscon 2 /v</span></div>
You see the following line and session 2 is disconnected: 
<div class="indent">Disconnecting sessionID2 from sessionname rdp-tcp#2 
</div></td></tr><tr><td class="number">
6.</td><td class="text">
To disconnect session 5 by using the session name, type the following line at the
command prompt, and then press ENTER: 
<div class="indent"><span class="userInput">tsdiscon rdp-tcp#5</span></div></td></tr></tbody></table></p>
        <img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=387051a3-9075-40f3-8de1-2a6fdd1d7ec7" />
      </body>
      <title>How to disconnect a Remote Desktop session from a command line</title>
      <guid isPermaLink="false">http://www.badmark.com/PermaLink,guid,387051a3-9075-40f3-8de1-2a6fdd1d7ec7.aspx</guid>
      <link>http://www.bAdmArk.com/How+To+Disconnect+A+Remote+Desktop+Session+From+A+Command+Line.aspx</link>
      <pubDate>Wed, 27 Sep 2006 18:34:11 GMT</pubDate>
      <description>&lt;p&gt;
In continuing with my Remote Desktop tricks (&lt;a href="http://badmark.com/2006/07/31/Who+Did+Not+Close+Their+Remote+Desktop+Connection.aspx"&gt;Who
did not close their Remote Desktop Connection&lt;/a&gt;)&amp;nbsp;, I thought I'd share another
nugget of information. TSDISCON.exe is a command line tool included in Windows since
2000. With this tool you can disconnect a session from a remote server (Especially
usefull for those times that someone forgot to logout and you keep receiving the maximum
number of connections reached error. 
&lt;/p&gt;
&lt;h3 id=tocHeadRef&gt;&lt;span&gt;&lt;a id=2&gt;&lt;/a&gt;&lt;/span&gt;Description of the TSDISCON Command
&lt;/h3&gt;
&lt;p&gt;
The &lt;strong class=uiterm&gt;tsdiscon&lt;/strong&gt; command uses the following syntax: 
&lt;/p&gt;
&lt;div class=indent&gt;&lt;b&gt;tsdiscon &lt;var&gt;SessionID&lt;/var&gt; | &lt;var&gt;SessionName&lt;/var&gt; [/server:&lt;var&gt;ServerName&lt;/var&gt;]
/v&lt;/b&gt;
&lt;/div&gt;
&lt;p&gt;
The parameters that are used by the &lt;strong class=uiterm&gt;tsdiscon&lt;/strong&gt; command
are: 
&lt;table class="list ul"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=bullet&gt;
•&lt;/td&gt;
&lt;td class=text&gt;
&lt;b&gt;&lt;var&gt;SessionID&lt;/var&gt;&lt;/b&gt;: Use this parameter to specify the ID of the session that
you want to disconnect. To determine the ID of the session that you want to disconnect,
use the &lt;strong class=uiterm&gt;query session&lt;/strong&gt; command. 
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=bullet&gt;
•&lt;/td&gt;
&lt;td class=text&gt;
&lt;b&gt;&lt;var&gt;SessionName&lt;/var&gt;&lt;/b&gt;: Use this parameter to specify the name of the session
that you want to disconnect. To determine the name of the session that you want to
disconnect, use the &lt;strong class=uiterm&gt;query session&lt;/strong&gt; command.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=bullet&gt;
•&lt;/td&gt;
&lt;td class=text&gt;
&lt;b&gt;/server:&lt;var&gt;ServerName&lt;/var&gt;&lt;/b&gt;: Use this parameter to specify the Terminal Services
server that hosts the session that you want to disconnect. If you omit this parameter,
the current Terminal Services server is specified.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=bullet&gt;
•&lt;/td&gt;
&lt;td class=text&gt;
&lt;b&gt;/v&lt;/b&gt;: Use this parameter to display information about the actions that are being
performed.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;b&gt;NOTE&lt;/b&gt;: You can disconnect your own sessions, but if you want to disconnect another
user's session, you must have Full Control access permissions. You cannot disconnect
the console session. 
&lt;br&gt;
&lt;/p&gt;
&lt;h3 id=tocHeadRef&gt;&lt;span&gt;&lt;a id=3&gt;&lt;/a&gt;&lt;/span&gt;How to Disconnect a Terminal Services Session
&lt;/h3&gt;
&lt;p&gt;
This is an example of how to use the &lt;strong class=uiterm&gt;tsdiscon&lt;/strong&gt; command
to disconnect a session on the current Terminal Services server: 
&lt;table class="list ol"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=number&gt;
1.&lt;/td&gt;
&lt;td class=text&gt;
In a Terminal Services session, click &lt;b&gt;Start&lt;/b&gt;, and then click &lt;b&gt;Run&lt;/b&gt;. 
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=number&gt;
2.&lt;/td&gt;
&lt;td class=text&gt;
Type &lt;span class=userInput&gt;cmd&lt;/span&gt;, and then click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=number&gt;
3.&lt;/td&gt;
&lt;td class=text&gt;
Determine the name or ID of the session that you want to disconnect. To do so, type &lt;span class=userInput&gt;query
session&lt;/span&gt;, and then press ENTER. You see a list of information about the sessions
on the current Terminal Services server. The list may be similar to: 
&lt;div class=indent&gt;&lt;pre class=in_text&gt;SESSIONNAME   USERNAME        ID      STATE    TYPE    DEVICE
 console      administrator       0   active   wdcon   
 rdp-tcp                      65536   listen   rdpwd
&amp;gt;rdp-tcp#1    user1               1   active   rdpwd
 rdp-tcp#2    user1               2   active   rdpwd
 rdp-tcp#3    user2               3   active   rdpwd
 rdp-tcp#4    user3               4   disc     rdpwd  
 rdp-tcp#5    user1               5   disc     rdpwd
                                  6   idle
                                  7  idle
						&lt;/pre&gt;
&lt;/div&gt;
Note that in this example, the name of the current session is rdp-tcp#1, the session
ID is 1, and it is owned by user1. 
&lt;br&gt;
&lt;br&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=number&gt;
4.&lt;/td&gt;
&lt;td class=text&gt;
To disconnect the current session, type the following line at the command prompt,
and then press ENTER: 
&lt;div class=indent&gt;&lt;span class=userInput&gt;tsdiscon&lt;/span&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=number&gt;
5.&lt;/td&gt;
&lt;td class=text&gt;
To disconnect session 2 by using the session ID, and to display information about
the disconnect operation, type the following line at the command prompt, and then
press ENTER: 
&lt;div class=indent&gt;&lt;span class=userInput&gt;tsdiscon 2 /v&lt;/span&gt;
&lt;/div&gt;
You see the following line and session 2 is disconnected: 
&lt;div class=indent&gt;Disconnecting sessionID2 from sessionname rdp-tcp#2 
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=number&gt;
6.&lt;/td&gt;
&lt;td class=text&gt;
To disconnect session 5 by using the session name, type the following line at the
command prompt, and then press ENTER: 
&lt;div class=indent&gt;&lt;span class=userInput&gt;tsdiscon rdp-tcp#5&lt;/span&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=387051a3-9075-40f3-8de1-2a6fdd1d7ec7" /&gt;</description>
      <comments>http://www.badmark.com/CommentView,guid,387051a3-9075-40f3-8de1-2a6fdd1d7ec7.aspx</comments>
      <category>Microsoft;Remote Desktop;Tech Tips;technology</category>
    </item>
    <item>
      <trackback:ping>http://www.badmark.com/Trackback.aspx?guid=00687f06-5c65-441d-be77-1f275afb2c40</trackback:ping>
      <pingback:server>http://www.badmark.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.badmark.com/PermaLink,guid,00687f06-5c65-441d-be77-1f275afb2c40.aspx</pingback:target>
      <dc:creator>bAdmArk</dc:creator>
      <wfw:comment>http://www.badmark.com/CommentView,guid,00687f06-5c65-441d-be77-1f275afb2c40.aspx</wfw:comment>
      <wfw:commentRss>http://www.badmark.com/SyndicationService.asmx/GetEntryCommentsRss?guid=00687f06-5c65-441d-be77-1f275afb2c40</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Does anyone remember when remote desktop was still Citrix Framework (MetaFrame, RDP
4.0 whatever the heck it was called)? Back then I was happy to have the ability to
access the box remotely, no more driving in the middle of the night through a rain
storm to restart IIS. The one glaring omission in Terminal Services was the lack of
file transfer. Yup, I'm connected to the server, but I'll have to ftp this file, which
means I'll have to configure ftp, if the server doesnt have it, etc. I was very pleasently
surprised when version 5.2 added local resource mapping. Yay, I could finally copy
files between computers using remote desktop. Lately I've found that many people I
assumed knew this, in fact did not. Hence my reason for sharing this with everyone. 
</p>
        <p>
To map your local hard drives using Remote Desktop (RDP) (Terminal Services)
</p>
        <ul>
          <li>
Open Remote Desktop (Start &gt; All Programs &gt; Accessories &gt; Communication &gt;
Remote Desktop Connection) Click Options 
</li>
          <li>
Put a checkmark in Disk Drives</li>
        </ul>
        <p>
          <img src="http://badmark.com/content/binary/rdp-connect-drives-screenshot.PNG" border="0" />
        </p>
        <ul>
          <li>
Now connect to the remote client and when you open Windows Explorer and Shazam! There
are your local drives.</li>
        </ul>
        <p>
          <img src="http://badmark.com/content/binary/rdp-connect-drives-screenshot 2.PNG" border="0" />
        </p>
        <p>
Is that simple!
</p>
        <p>
Tip: If you know you'd like to always have your drives available whenever you use
Remote Desktop, you can make this change and Save As Default.rdp in your "My Documents"
folder (It will ask you to overwrite the existing copy, go ahead), this applies for
any default settings you might want to set, Display Resolution, Domain, Printers,
Etc.
</p>
        <img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=00687f06-5c65-441d-be77-1f275afb2c40" />
      </body>
      <title>How to copy files while connected to Windows computer using Remote Desktop</title>
      <guid isPermaLink="false">http://www.badmark.com/PermaLink,guid,00687f06-5c65-441d-be77-1f275afb2c40.aspx</guid>
      <link>http://www.bAdmArk.com/How+To+Copy+Files+While+Connected+To+Windows+Computer+Using+Remote+Desktop.aspx</link>
      <pubDate>Wed, 27 Sep 2006 03:18:38 GMT</pubDate>
      <description>&lt;p&gt;
Does anyone remember when remote desktop was still Citrix Framework (MetaFrame, RDP
4.0 whatever the heck it was called)? Back then I was happy to have the ability to
access the box remotely, no more driving in the middle of the night through a rain
storm to restart IIS. The one glaring omission in Terminal Services was the lack of
file transfer. Yup, I'm connected to the server, but I'll have to ftp this file, which
means I'll have to configure ftp, if the server doesnt have it, etc. I was very pleasently
surprised when version 5.2 added local resource mapping. Yay, I could finally copy
files between computers using remote desktop. Lately I've found that many people I
assumed knew this, in fact did not. Hence my reason for sharing this with everyone. 
&lt;/p&gt;
&lt;p&gt;
To map your local hard drives using Remote Desktop (RDP) (Terminal Services)
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Open Remote Desktop (Start &amp;gt; All Programs &amp;gt; Accessories &amp;gt; Communication &amp;gt;
Remote Desktop Connection) Click Options 
&lt;li&gt;
Put a checkmark in Disk Drives&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;img src="http://badmark.com/content/binary/rdp-connect-drives-screenshot.PNG" border=0&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Now connect to the remote client and when you open Windows Explorer&amp;nbsp;and Shazam!&amp;nbsp;There
are your local drives.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;img src="http://badmark.com/content/binary/rdp-connect-drives-screenshot 2.PNG" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Is that simple!
&lt;/p&gt;
&lt;p&gt;
Tip: If you know you'd like to always have your drives available whenever you use
Remote Desktop, you can make this change and Save As Default.rdp in your "My Documents"
folder (It will ask you to overwrite the existing copy, go ahead), this applies for
any default settings you might want to set, Display Resolution, Domain, Printers,
Etc.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=00687f06-5c65-441d-be77-1f275afb2c40" /&gt;</description>
      <comments>http://www.badmark.com/CommentView,guid,00687f06-5c65-441d-be77-1f275afb2c40.aspx</comments>
      <category>Microsoft;Remote Desktop;Tech Tips;technology</category>
    </item>
    <item>
      <trackback:ping>http://www.badmark.com/Trackback.aspx?guid=7af98ab0-cfb9-4872-8baf-cf2d4cf31ea2</trackback:ping>
      <pingback:server>http://www.badmark.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.badmark.com/PermaLink,guid,7af98ab0-cfb9-4872-8baf-cf2d4cf31ea2.aspx</pingback:target>
      <dc:creator>bAdmArk</dc:creator>
      <wfw:comment>http://www.badmark.com/CommentView,guid,7af98ab0-cfb9-4872-8baf-cf2d4cf31ea2.aspx</wfw:comment>
      <wfw:commentRss>http://www.badmark.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7af98ab0-cfb9-4872-8baf-cf2d4cf31ea2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Apparantely someone at WalMart got a little ansy about adding the <a href="https://www.comingzune.com/">Microsoft
Zune</a> to their online database. Based on some reports, for a short time yesterday,
Walmart had the Zune listed at a retail value of $284.00. Question is, was this price
set prior to Apple dropping the price on their 30GB iPod down to $249.00 from $299.00?
Will Microsoft come in even lower for this wonderful Zune we all keep hearing about? 
</p>
        <p>
          <img src="http://badmark.com/content/binary/wal-mart-zune-price.jpg" border="0" />
        </p>
        <p>
          <a href="http://www.walmart.com/catalog/catalog.gsp?cat=538220">Walmart has a whole
section dedicated to the Zune</a>.
</p>
        <p>
Only time will tell....
</p>
        <p>
 
</p>
        <p>
          <strong>UPDATE</strong>
        </p>
        <p>
It's seems someone at Microsoft leaked the final price of the Zune - Drumroll please
- $229.00. Apparantely they've decided to drop some pre-loaded content to make the
price below that of Apple's iPod.
</p>
        <img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=7af98ab0-cfb9-4872-8baf-cf2d4cf31ea2" />
      </body>
      <title>Walmart leaks possible Microsoft Zune pricing</title>
      <guid isPermaLink="false">http://www.badmark.com/PermaLink,guid,7af98ab0-cfb9-4872-8baf-cf2d4cf31ea2.aspx</guid>
      <link>http://www.bAdmArk.com/Walmart+Leaks+Possible+Microsoft+Zune+Pricing.aspx</link>
      <pubDate>Thu, 21 Sep 2006 15:39:48 GMT</pubDate>
      <description>&lt;p&gt;
Apparantely someone at WalMart got a little ansy about adding the&amp;nbsp;&lt;a href="https://www.comingzune.com/"&gt;Microsoft
Zune&lt;/a&gt;&amp;nbsp;to their online database. Based on some reports, for a short time yesterday,
Walmart had the Zune listed at a retail value of $284.00. Question is, was this price
set prior to Apple dropping the price on their 30GB iPod down to $249.00 from $299.00?
Will Microsoft come in even lower for this wonderful Zune we all keep hearing about? 
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://badmark.com/content/binary/wal-mart-zune-price.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.walmart.com/catalog/catalog.gsp?cat=538220"&gt;Walmart has a whole
section dedicated to the Zune&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Only time will tell....
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;UPDATE&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
It's seems someone at Microsoft leaked the final price of the Zune - Drumroll please
- $229.00. Apparantely they've decided to drop some pre-loaded content to make the
price below that of Apple's iPod.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.badmark.com/aggbug.ashx?id=7af98ab0-cfb9-4872-8baf-cf2d4cf31ea2" /&gt;</description>
      <comments>http://www.badmark.com/CommentView,guid,7af98ab0-cfb9-4872-8baf-cf2d4cf31ea2.aspx</comments>
      <category>Business;Funny;Microsoft;Music;technology</category>
    </item>
  </channel>
</rss>