Or you can just dump the device manager info, recreate a similar tree, and search drivers based on HID, create a database of drivers and search for ID, match OS if you want support for multiple OSes, you're done. All you have to do is update the damn database all the time.
That would be great for system management, but not really helpful if you want to use the app to find driver files for hardware not on your system.
I would dynamically generate the buttons on the form based on a structure (vendor names, category keywords and links) that pulls information from the server. You still would only have to update the server that way.
Something like ...
Code:
public struct Locator
{
public string Category; // networking, video etc.
public string URL;
}
public struct Vendor
{
public string Name; // Asus, 3Com, etc.
public List<Locator> Locators; // a list of type locator above
}
private List<Vendor> VendorList = new List<Vendor>();
Traverse the VendorList for each TabPage and dynamically create a button for each vendor who has a locator that matches the TapPage Keyword. (ie. networking).
Lists are fast and efficient and would allow for sorting, filtering, adding removing, etc.
It would also mean you could reuse all resources needed for a specific vendor (ie. Button art).
There are, of course, many ways to accomplish this if you are not a fan of Lists.