Click here to Skip to main content
15,881,588 members
Articles / Desktop Programming / Win32
Article

Application Configuration Settings .NET & VB 6 With XML

Rate me:
Please Sign up or sign in to vote.
2.47/5 (4 votes)
17 Jun 2008CPOL3 min read 34.1K   1.3K   21  
Application configuration settings .NET & VB 6 with XML
Image 1

Introduction

This is my first article. I hope that my code and findings are helpful to other members of The Code Project.

INI files and the registry are generally things of the past for .NET applications. But what do we use? XML seems appropriate, but one look at System.XML is enough to scare most developers off, especially just to store a few fields. Fortunately, there is a very easy way in .NET to solve this, but one that is usually not seen by developers. In this article, I'll explain how you can easily store and retrieve your application settings with just a few lines of code.

History

In Windows 3.1, developers used INI files to store settings. In general, they worked pretty well for simple settings, but were not appropriate for more complex data. INI files also did not account for multiple users, and thus Microsoft invented the registry.

Along came the registry with Win32. The registry was fast, hierarchical, multi user, and allowed storage of typed data. But unfortunately, the registry was a central system component and was not contained as part of the application install.

Next, XML became popular. XML offers fast, hierarchical storage of typed data. However, XML is so flexible that for most users doing anything simple is quite an undertaking. Fortunately, there are easier ways than using System.XML and handling everything yourself.

Using the Code

To use the class, there are only two methods you will need to worry about:

  • void GetSettings(String Key)
    • Set the path and filename for the XML settings file
  • void WriteSetting(String Key, String KeyValue, bool encode)
    • Write a value to the settings file given a key and value name
    • Encode option is to encrypt the value
VB.NET
// Read Data
TxtServerName.Text = Configure.getSetting("DBServer");

// Save data
Configure.writeSetting("DBServer", TxtServerName.Text, false);

' Read data from vb6
Dim x As New Configuration.configure
TxtDBServer.Text = CStr(x.getSettingFromVB6("DBServer"))

If the XML file does not exist or if a key/value does not exist, the Write methods will create it and the Get methods will return the default value.

Registering the Assembly to Work with VB6

Image 2

The library must be registered on the client machine before use by VB6. If it is not registered on the development machine, then it will not be visible in the References dialog of VB6. If it's not registered on the installation machine, then it is a similar problem to if you have not registered a classic DLL or ActiveX control. The "Register for COM Interop" checkbox in Visual Studio 2005 performs this registration automatically while the environment is running, but un-registers it when Visual Studio is closed.

To register the assembly, you must use the .NET equivalent of regsvr32, regasm. This is located in the framework directory, usually C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727. To register it, open a command prompt and run the following command, assuming that the framework directory and the assemblies directory are in the environment's current path.

regasm.exe Assembly.dll

Conclusion

XML files are a widespread standard that allow easy storage of structured typed data. Use of XML files allow easy editing by end users, and even by other software. Using System.XML, you can easily store your settings in XML files.

Also check this article for more information.

History

  • 7th March, 2008: Initial version
  • 17th June, 2008: Article updated

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Engineer
Portugal Portugal
My name is Nelson Souto, I develop software for fun and profit since 1992.

Comments and Discussions

 
-- There are no messages in this forum --