skip to Main Content

Enabling Anonymous File Sharing with Vista

On my home network, I have a media file server running Vista 64-bit that serves out music and movies. Since everything is behind a router, I decided to make the shared media folders accessible to anyone on my home network. All you have to do is browse to the media server and start accessing content, without having to log in.

To enable anonymous browsing of a shared folder that is shared by a Vista PC (that is not on a domain), do the following:

  • Enable the Guest Account:
    • Run "lusrmgr.msc", select the Users folder.
    • Right click on the Guest user and choose Properttes.
    • Uncheck "Account is disabled".

      image

  • Enable "Public folder sharing" and disable "Password protected sharing":
    • Choose Start, right click on Network, and choose Properties.
    • Enable "Public folder sharing".
    • Disable "Password protected sharing".

      image

  • For each shared folder:
    • Grant Everyone Read permission to the Share.
    • Grant Everyone Read and Execute (NTFS) permission on the shared folder itself.

      image

Vista 64-bit and SoundBlaster X-Fi Crackling/Popping

Against popular wisdom, I decided to upgrade my bedroom home theater PC to Vista 64-bit a couple days ago (just have to make full use of all of my precious 4GB of RAM). Everything is working surprising well so far, with the exception of sound! Whenever I play any audio, my speakers now produce all kinds of pops and crackles along with the normal audio stream. Urgg.

After a couple of days of googling, tweeking various sound settings, uninstalling/reinstalling drivers, etc. without success, I almost gave up on the thing. Then I decided to try just one more thing, changing the default sample rate to “2 channel, 16 bit, 44100 Hz (CD Quality)” from the default “2 channel, 24 bit, 48000Hz” and just like magic, the pops and crackles are gone.

SPDIF Out Properties

Web Scraping, HTML/XML Parsing, and Firebug’s Copy XPath Feature

If you do any web scraping (also known as web data mining, extracting, harvesting), you are probably familiar with the main steps: navigate to page, retrieve HTML, parse HTML, extract desired elements, repeat. I’ve found the SgmlReader library to be very useful for this purpose. SmglReader turns your HTML into XML. Once you have the XML, it’s fairly easy to use built-in classes such as XmlDocument, XmlTextReader, XPathNavigator to parse and extract the data you want.

Now to the labor intensive part: before your program can make sense of the XML, you have to manually analyze the HTML/XML first. Your program won’t know jack about how to extract that stock price until you tell it exactly where the stock price is, typically in the form of an XPath expression. My process of getting that XPath expression goes something like this:

  1. Scroll to/find desired element in the XML editor.
  2. Does element have unique attributes that can be used?
    • a – If yes, code XPATH statement with filter on attribute value. Example: //Table[@id=”searchResultTable”].
    • b – If no, code an absolute XPATH expression. Example: /html/body/div[4]/pre[2]/font[7]/table[2]/tr[5]/td[2]/table[1]/tr[2]/td[5]/span.

Step 2b is where it gets very labor intensive and boring, especially for a big web page with many levels of nesting. Visual Studio 2005 XML Editor/Resharper have a couple of features that I find useful for this:

– Visual Studio’s Format Document (Edit/Advanced/Format Document) command formats the XML with nice indentation and makes it a lot easier to look at.

– With Resharper, you can press Ctrl-[ to go to the start of the current element, or if you are already at the start, go to the parent element.

Even with the above tools, it’s still a painful and error-prone exercise. Luckily for us, Firebug has the perfect feature for this: Copy XPath. To use it, open your HTML/XML document, open the Firebug pane (Tools/Firebug/Open Firebug), navigate to the desired element, right click on it and choose “Copy XPath”.

Firebug Copy Xpath

You should now have this XPath expression in the clipboard, ready to be pasted into your web scrapper application: “/html/body/div[2]/table/tr/td[2]/table”.

A feature that I would love to have is the ability to generate an alternate XPath expression using “id” predicates, such as this: “//Table[@id=”searchResultTable”]”. With web pages that are not under your control, you want to minimize the chance that changes on the pages impact your code. Absolute XPath expressions are vulnerable to any kind of changes on the page that change the order and/or nesting of elements. On the other hand, XPath expressions using an “id” predicate are less likely to be impacted by layout changes because in HTML, element IDs are supposed to be unique. No matter where your element is on the page, if it has the same ID, you should still be able to get to it by looking up the ID. Hmm… this sounds like a good idea for a Visual Studio Add-in.

Finds of the Week – May 31, 2008

Programming

.NET/C#

Software and Tools

  • Google Maps Street View is in Richmond.

    Google Street View Richmond Virginia Goo

    It looks like the Street View images were taken around September 2007 because according to IMDB, the movie Game Plan was playing in the US starting 9/23/2007:

    Google Street View Richmond

  • Google Maps adds user-created photos, videos, maps. Via CNET.

    Google Maps Goog

Something Different

Installing Windows Vista without CD/DVD Drive

Just in case anyone else needs to do this out there…

I recently got myself a nice ThinkPad X60 Tablet PC. It doesn’t come with a DVD-Drive and although I have an external DVD drive, I just can’t seem to find its power adapter. Argg!

In order to do this, you must have the following:

  • Windows XP installed on the PC you want to install Vista to.

Procedure

  1. Log in into Windows XP on the PC you want to install Vista to.
  2. Use Partition Magic or another partitioning tool and create a second partition for Vista. Make it a Primary Partition (don’t know if this is required but this is what I did). Format the second partition with NTFS. Your Windows XP installation will be left alone and you will be able to dual boot to it.
  3. Create a folder (let’s called it "c:\VistaInstall") and copy all files from the Vista DVD / ISO there (either extract the files from an ISO image using a Virtual CD/DVD emulator like Daemon Tools, or copy the files from another PC with a DVD drive over the network).
  4. Run Setup.exe from c:\VistaInstall.
  5. Choose Custom Install and follow the prompts to select the second partition you created.
  6. Follow the rest of the on-screen instructions.

As part of the installation, Vista Setup will copy the installation files to the new partition. After it reboots, it’ll have all the files there to continue.

After you are done with the install, you can delete the temporary folder c:\VistaInstall that you created.

Back To Top