Take the 2-minute tour ×

Edit: Hello serverfault, they didn't like my question on programmers and migrated it here.

In short my questions is: How do you (administrators) prefer to control settings for third party, off the shelf, desktop software?

My application needs a server name and a database name. I also have some offline data storage that is occasionally redirected from the default location in My Documents.

Right now users need to open the my software and type in these values. I would like to provide administrators with a way to automatically set these for users while still letting users self configure in smaller organisations.

I have a desktop software application that stores its configuration information in a file located in the user's AppData folder. Defaults are created by the application if the configuration file does not exist. Some of the settings like registration codes and server/database name can't be set by default.

I'm looking for methods to allow and IT department to push out default settings to my application. Right now I am considering having my application read two configuration files. One that would be in a fixed location copied by the administrator. This would be manually added (or probably pushed out by some other tool) to either the install directory or All Users or other public location. Any settings in that file would override the per user configuration settings.

I know that other applications have different ways for administrators to control per user settings using SMS or GPO. But not being an administrator myself I have never used any of those tools.

Are there any best practices for allowing administrators to override default settings for desktop software?

I need this two work in two different situations. One is laptop users who are connected to the network when software is installed but often disconnected when running the software - one user per computer. The other is Citrix based systems where clients are always connected but multiple users per computer. Some of the settings are global - i.e. the server name, while others are user specific. Things like redirecting the default save location to a per user network share.

share|improve this question

migrated from programmers.stackexchange.com Oct 6 '11 at 18:06


Why not create a GUI administration page? Maybe part of the application or on the web/intranet. There admins can update the change-able parameters. The file focused "push" updates seems overly complex. –  P.Brian.Mackey Oct 6 '11 at 16:15
I have a GUI setup page. I want to automatically configure the app without end user input. I am saving the config file in the user profile to ensure access. That makes it hard for admins to make changes. In some cases the profile does not even exist when the admin is setting up a system (the user has not logged in yet). If I go look for a central config file on a server how do I know the server name/path? If I move the config file to a computer wide location then users could not change it. I also don't want to force admins to open a GUI on 60 different computers to key in the same settings. –  Mark Elder Oct 6 '11 at 16:54
My personal opinion is to use a Group Policy. They're not that bad to setup once you get used to them. –  Rachel Oct 6 '11 at 17:04
You can pull the configuration path from a centralized and update able location. For example, a web server. Then use this location to to download the settings on first launch. –  P.Brian.Mackey Oct 6 '11 at 17:09
@Rachel - What does Group Policy actually do though? As a programmer how do I read what they set? Does it just push out registry entries? I've never found any good references for programmers who want to use group policy settings in their apps. –  Mark Elder Oct 6 '11 at 17:43
show 1 more comment

2 Answers

I think you need to do some requirements gathering. Determine what the clients need and are willing to pay for. See if it makes sense to host the files yourself, tell the clients to self-host and provide a solution that they can install or some other solution that is requirements specific.

Once you have requirements in place we will be better prepared to help you with the technical portion.

Whatever the implementation turns out to be, you should do something to centralize and automate the process.

share|improve this answer
add comment

My own software always saves its settings in the user profile. Each user can therefore create their own configuration. If I wish to create a default config for new users I create it the way I want and then simply copy the settings (registry or ini file) to the default users's profile. That frofile is used as the a new user's profile when they first log on. It can also be propagated via Group Policies if that is ever necessary. Anything more complex than that is just not worth the effort for the dev, the admin or the users.

share|improve this answer
add comment

Your Answer


