473,848 Members | 1,828 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Where can I store these settings?


Hi,

I am developing an application that needs to store some machine-specific
settings. The application is going to be published on the network in
order to keep the clients on the latest version.
Because of this, I am unable to store these settings in the App.Config
file, as this gets updated every time the application does, and there
doesn't appear to be a way of preventing this.

Most of my application settings are kept in the database, but there are
some that I need before the database connection is established.

What I need is a way of storing these so that they can be changed on
each machine, and that can preferably be edited with a text editor.
(I don't want to put them in the registry, because I want it to be easy
to copy the settings from one machine to another)

Is there any support for INI files in .Net?
Is there a better solution?
Thanks.

Paul Cheetham

May 24 '06 #1
10 4287
On Wed, 24 May 2006 11:02:54 +0100, Paul Cheetham
<PA******@dsl.p ipex.com> wrote:

Hi,

I am developing an application that needs to store some machine-specific
settings. The application is going to be published on the network in
order to keep the clients on the latest version.
Because of this, I am unable to store these settings in the App.Config
file, as this gets updated every time the application does, and there
doesn't appear to be a way of preventing this.

Most of my application settings are kept in the database, but there are
some that I need before the database connection is established.

What I need is a way of storing these so that they can be changed on
each machine, and that can preferably be edited with a text editor.
(I don't want to put them in the registry, because I want it to be easy
to copy the settings from one machine to another)

Is there any support for INI files in .Net?
Is there a better solution?
Thanks.

Paul Cheetham


Maybe you can write a Settings class with the required properties, and
serialize/deserialize it to an xml file (XmlSerializer) ?

--
Ludwig Stuyck
http://www.coders-lab.be
May 24 '06 #2
Having come to C#/.Net from a Delphi background I thought the ease of
storing local options was a bit lacking so I have created a class that does
just the type of thing you want.

1. You need to take the code below and create Settings.cs

2. Then in your program create a new class descended from SettingsObjectB ase
that has all the settings you need to store in it. You can even have
collections etc.

public class MyAppSettings : SettingsObjectB ase
{
public string Name;
public string Address;
public List<MyStuff> MyList = new List<MyStuff>() ;
}

3. Then at the start of your program do this:
SettingsStore<M yAppSettings> MySettingsStore = new
SettingsStore<M yAppSettings>(S ettingsStoreLoc ation.UserAppli cationLevel)

4. It will auto load as soon as you decclare it (if it can). But after this
you can do SettingsStore.L oad() and SettingsStore.S ave()

5. Then all you need to do is work with MyAppSettings throughout your
program to access your settings.

Let me know if this class is useful to anyone.
Code for Settings.cs:

using System;
using System.Collecti ons.Generic;
using System.Text;
using System.Xml.Seri alization;
using System.IO;
using System.Windows. Forms;

namespace YourCompanyName .General
{
/// <summary>
/// Where to place the settings store
/// </summary>
public enum SettingsStoreLo cation
{
/// <summary>
/// In the file specified
/// </summary>
SpecifiedFile,
/// <summary>
/// In the user home directory in the product folder
/// </summary>
UserProductLeve l,
/// <summary>
/// In the user home directory in the product/appname folder
/// </summary>
UserApplication Level,
/// <summary>
/// In the common home directory in the product folder
/// </summary>
AllUsersProduct Level,
/// <summary>
/// In the common home directory in the product/appname folder
/// </summary>
AllUsersApplica tionLevel
}

/// <summary>
/// Generic class for storing settings in XML
/// </summary>
public class SettingsStore<T > where T : SettingsObjectB ase, new()
{
#region Construction
/// <summary>
/// Constructor for standard storage location + part file name
/// </summary>
/// <param name="Location" >The place to store the settings</param>
/// <param name="FileName" >The last part of the file name excluding
the
/// path unless using SpecifiedFile in which case this is the
/// full file name</param>
public SettingsStore(S ettingsStoreLoc ation Location, string
FileName)
{
SetupLocation(L ocation, FileName);
}

/// <summary>
/// Constructor for standard storage location
/// </summary>
/// <param name="Location" >The place to store the settings</param>
public SettingsStore(S ettingsStoreLoc ation Location)
{
SetupLocation(L ocation, string.Empty);
}

/// <summary>
/// Constructor for specified storage location with full file name
/// </summary>
/// <param name="FileName" >The full filename for where to store the
/// settings</param>
public SettingsStore(s tring FileName)
{
SetupLocation(S ettingsStoreLoc ation.Specified File, FileName);
}

/// <summary>
/// Constructor for a specified file location that you do not know
yet.
/// You must set the FileName propery before calling Save/Load.
/// </summary>
/// <param name="Location" ></param>
public SettingsStore()
{
SetupLocation(S ettingsStoreLoc ation.Specified File,
string.Empty);
}

// Setup where the file will be stored
void SetupLocation(S ettingsStoreLoc ation Location, string FileName)
{
_Location = Location;

if (_Location != SettingsStoreLo cation.Specifie dFile)
if (FileName.Trim( ) == string.Empty)
FileName = "Settings.x ml";

switch (_Location)
{
case SettingsStoreLo cation.Specifie dFile:
_FileName = FileName;
break;
case SettingsStoreLo cation.UserProd uctLevel:
_FileName = Environment.Get FolderPath(
Environment.Spe cialFolder.Appl icationData) +
Path.DirectoryS eparatorChar +
Application.Com panyName +
Path.DirectoryS eparatorChar +
_ProductName + Path.DirectoryS eparatorChar +
FileName;
break;
case SettingsStoreLo cation.UserAppl icationLevel:
_FileName = Environment.Get FolderPath(
Environment.Spe cialFolder.Appl icationData) +
Path.DirectoryS eparatorChar +
Application.Com panyName +
Path.DirectoryS eparatorChar +
_ProductName + Path.DirectoryS eparatorChar +
Path.GetFileNam eWithoutExtensi on(Application. ExecutablePath)
+
Path.DirectoryS eparatorChar +
FileName;
break;
case SettingsStoreLo cation.AllUsers ProductLevel:
_FileName = Environment.Get FolderPath(
Environment.Spe cialFolder.Comm onApplicationDa ta) +
Path.DirectoryS eparatorChar +
Application.Com panyName +
Path.DirectoryS eparatorChar +
_ProductName + Path.DirectoryS eparatorChar +
FileName;
break;
case SettingsStoreLo cation.AllUsers ApplicationLeve l:
_FileName = Environment.Get FolderPath(
Environment.Spe cialFolder.Comm onApplicationDa ta) +
Path.DirectoryS eparatorChar +
Application.Com panyName +
Path.DirectoryS eparatorChar +
_ProductName + Path.DirectoryS eparatorChar +
Path.GetFileNam eWithoutExtensi on(Application. ExecutablePath)
+
Path.DirectoryS eparatorChar +
FileName;
break;
}

if ((_FileName != string.Empty) && (File.Exists(_F ileName)))
Load();
else
Reset();
}
#endregion

#region Settings Access
// Internal store of settings object
T _Settings;
/// <summary>
/// The settings object holding the actual settings
/// </summary>
public T Settings
{
get
{
return _Settings;
}
}
#endregion

#region Storage
SettingsStoreLo cation _Location;
/// <summary>
/// Where the settings will be stored
/// </summary>
public SettingsStoreLo cation Location
{
get
{
return _Location;
}
}

string _FileName;
/// <summary>
/// The filename where the settings will be stored
/// </summary>
public string FileName
{
get
{
return _FileName;
}
set
{
_FileName = value;
_Location = SettingsStoreLo cation.Specifie dFile;
}
}

string _ProductName = Application.Pro ductName;
/// <summary>
/// This defaults to Application.Pro ductName but you can change it
/// e.g. if you want to create a shared product name to hold
settings
/// shared between a group of products
/// </summary>
public string ProductName
{
get
{
return _ProductName;
}
set
{
_ProductName = value;
}
}

/// <summary>
/// Save the settings to disk
/// </summary>
public void Save()
{
if (FileName.Trim( ) == string.Empty)
throw new Exception("No FileName has been specified");

Directory.Creat eDirectory(Path .GetDirectoryNa me(_FileName));

using (StreamWriter Writer = new StreamWriter(_F ileName))
{
XmlSerializer Serializer = new XmlSerializer(t ypeof(T));

Serializer.Seri alize(Writer, _Settings);
}

}

/// <summary>
/// Load the settings from disk. This happens automatically if you
/// specify a location when creating the object.
/// </summary>
public void Load()
{
if (FileName.Trim( ) == string.Empty)
throw new Exception("No FileName has been specified");

if (!File.Exists(_ FileName))
throw new Exception("The file does not exist");

using (FileStream Reader = new FileStream(_Fil eName,
FileMode.Open))
{
XmlSerializer Serializer = new XmlSerializer(t ypeof(T));

_Settings = (T)Serializer.D eserialize(Read er);
}
}

/// <summary>
/// Reset the settings to their default state
/// </summary>
public void Reset()
{
_Settings = new T();
}

/// <summary>
/// Resets the settings to their default state and deletes the
storage file
/// </summary>
public void Delete()
{
if (File.Exists(_F ileName))
File.Delete(_Fi leName);

Reset();
}
#endregion
}

/// <summary>
/// Base class for settings objects.
/// You must inherit your settings object from this.
/// </summary>
public abstract class SettingsObjectB ase
{
}

}
--
Andrew Cutforth - AJC Software - www.ajcsoft.com
The best folder synchronize and directory compare tool available.
AJC Active Backup instantly archives every file you edit giving you
unlimited undo and automatic revision control. Never lose your data again.
May 24 '06 #3

Thanks Andrew.
That looks like a useful class, although it's a bit of overkill for what
I'm doing here, as I only need to read 3 or 4 settings at program startup.
I already have a settings class that pulls its information from a
database table. (If you want this let me know and I can send you the code)
I think I'll fall back to the good old ini files.
Paul.

Andrew wrote:
Having come to C#/.Net from a Delphi background I thought the ease of
storing local options was a bit lacking so I have created a class that does
just the type of thing you want.

1. You need to take the code below and create Settings.cs

2. Then in your program create a new class descended from SettingsObjectB ase
that has all the settings you need to store in it. You can even have
collections etc.

public class MyAppSettings : SettingsObjectB ase
{
public string Name;
public string Address;
public List<MyStuff> MyList = new List<MyStuff>() ;
}

3. Then at the start of your program do this:
SettingsStore<M yAppSettings> MySettingsStore = new
SettingsStore<M yAppSettings>(S ettingsStoreLoc ation.UserAppli cationLevel)

4. It will auto load as soon as you decclare it (if it can). But after this
you can do SettingsStore.L oad() and SettingsStore.S ave()

5. Then all you need to do is work with MyAppSettings throughout your
program to access your settings.

Let me know if this class is useful to anyone.
Code for Settings.cs:

using System;
using System.Collecti ons.Generic;
using System.Text;
using System.Xml.Seri alization;
using System.IO;
using System.Windows. Forms;

namespace YourCompanyName .General
{
/// <summary>
/// Where to place the settings store
/// </summary>
public enum SettingsStoreLo cation
{
/// <summary>
/// In the file specified
/// </summary>
SpecifiedFile,
/// <summary>
/// In the user home directory in the product folder
/// </summary>
UserProductLeve l,
/// <summary>
/// In the user home directory in the product/appname folder
/// </summary>
UserApplication Level,
/// <summary>
/// In the common home directory in the product folder
/// </summary>
AllUsersProduct Level,
/// <summary>
/// In the common home directory in the product/appname folder
/// </summary>
AllUsersApplica tionLevel
}

/// <summary>
/// Generic class for storing settings in XML
/// </summary>
public class SettingsStore<T > where T : SettingsObjectB ase, new()
{
#region Construction
/// <summary>
/// Constructor for standard storage location + part file name
/// </summary>
/// <param name="Location" >The place to store the settings</param>
/// <param name="FileName" >The last part of the file name excluding
the
/// path unless using SpecifiedFile in which case this is the
/// full file name</param>
public SettingsStore(S ettingsStoreLoc ation Location, string
FileName)
{
SetupLocation(L ocation, FileName);
}

/// <summary>
/// Constructor for standard storage location
/// </summary>
/// <param name="Location" >The place to store the settings</param>
public SettingsStore(S ettingsStoreLoc ation Location)
{
SetupLocation(L ocation, string.Empty);
}

/// <summary>
/// Constructor for specified storage location with full file name
/// </summary>
/// <param name="FileName" >The full filename for where to store the
/// settings</param>
public SettingsStore(s tring FileName)
{
SetupLocation(S ettingsStoreLoc ation.Specified File, FileName);
}

/// <summary>
/// Constructor for a specified file location that you do not know
yet.
/// You must set the FileName propery before calling Save/Load.
/// </summary>
/// <param name="Location" ></param>
public SettingsStore()
{
SetupLocation(S ettingsStoreLoc ation.Specified File,
string.Empty);
}

// Setup where the file will be stored
void SetupLocation(S ettingsStoreLoc ation Location, string FileName)
{
_Location = Location;

if (_Location != SettingsStoreLo cation.Specifie dFile)
if (FileName.Trim( ) == string.Empty)
FileName = "Settings.x ml";

switch (_Location)
{
case SettingsStoreLo cation.Specifie dFile:
_FileName = FileName;
break;
case SettingsStoreLo cation.UserProd uctLevel:
_FileName = Environment.Get FolderPath(
Environment.Spe cialFolder.Appl icationData) +
Path.DirectoryS eparatorChar +
Application.Com panyName +
Path.DirectoryS eparatorChar +
_ProductName + Path.DirectoryS eparatorChar +
FileName;
break;
case SettingsStoreLo cation.UserAppl icationLevel:
_FileName = Environment.Get FolderPath(
Environment.Spe cialFolder.Appl icationData) +
Path.DirectoryS eparatorChar +
Application.Com panyName +
Path.DirectoryS eparatorChar +
_ProductName + Path.DirectoryS eparatorChar +
Path.GetFileNam eWithoutExtensi on(Application. ExecutablePath)
+
Path.DirectoryS eparatorChar +
FileName;
break;
case SettingsStoreLo cation.AllUsers ProductLevel:
_FileName = Environment.Get FolderPath(
Environment.Spe cialFolder.Comm onApplicationDa ta) +
Path.DirectoryS eparatorChar +
Application.Com panyName +
Path.DirectoryS eparatorChar +
_ProductName + Path.DirectoryS eparatorChar +
FileName;
break;
case SettingsStoreLo cation.AllUsers ApplicationLeve l:
_FileName = Environment.Get FolderPath(
Environment.Spe cialFolder.Comm onApplicationDa ta) +
Path.DirectoryS eparatorChar +
Application.Com panyName +
Path.DirectoryS eparatorChar +
_ProductName + Path.DirectoryS eparatorChar +
Path.GetFileNam eWithoutExtensi on(Application. ExecutablePath)
+
Path.DirectoryS eparatorChar +
FileName;
break;
}

if ((_FileName != string.Empty) && (File.Exists(_F ileName)))
Load();
else
Reset();
}
#endregion

#region Settings Access
// Internal store of settings object
T _Settings;
/// <summary>
/// The settings object holding the actual settings
/// </summary>
public T Settings
{
get
{
return _Settings;
}
}
#endregion

#region Storage
SettingsStoreLo cation _Location;
/// <summary>
/// Where the settings will be stored
/// </summary>
public SettingsStoreLo cation Location
{
get
{
return _Location;
}
}

string _FileName;
/// <summary>
/// The filename where the settings will be stored
/// </summary>
public string FileName
{
get
{
return _FileName;
}
set
{
_FileName = value;
_Location = SettingsStoreLo cation.Specifie dFile;
}
}

string _ProductName = Application.Pro ductName;
/// <summary>
/// This defaults to Application.Pro ductName but you can change it
/// e.g. if you want to create a shared product name to hold
settings
/// shared between a group of products
/// </summary>
public string ProductName
{
get
{
return _ProductName;
}
set
{
_ProductName = value;
}
}

/// <summary>
/// Save the settings to disk
/// </summary>
public void Save()
{
if (FileName.Trim( ) == string.Empty)
throw new Exception("No FileName has been specified");

Directory.Creat eDirectory(Path .GetDirectoryNa me(_FileName));

using (StreamWriter Writer = new StreamWriter(_F ileName))
{
XmlSerializer Serializer = new XmlSerializer(t ypeof(T));

Serializer.Seri alize(Writer, _Settings);
}

}

/// <summary>
/// Load the settings from disk. This happens automatically if you
/// specify a location when creating the object.
/// </summary>
public void Load()
{
if (FileName.Trim( ) == string.Empty)
throw new Exception("No FileName has been specified");

if (!File.Exists(_ FileName))
throw new Exception("The file does not exist");

using (FileStream Reader = new FileStream(_Fil eName,
FileMode.Open))
{
XmlSerializer Serializer = new XmlSerializer(t ypeof(T));

_Settings = (T)Serializer.D eserialize(Read er);
}
}

/// <summary>
/// Reset the settings to their default state
/// </summary>
public void Reset()
{
_Settings = new T();
}

/// <summary>
/// Resets the settings to their default state and deletes the
storage file
/// </summary>
public void Delete()
{
if (File.Exists(_F ileName))
File.Delete(_Fi leName);

Reset();
}
#endregion
}

/// <summary>
/// Base class for settings objects.
/// You must inherit your settings object from this.
/// </summary>
public abstract class SettingsObjectB ase
{
}

}

May 24 '06 #4
>
Maybe you can write a Settings class with the required properties, and
serialize/deserialize it to an xml file (XmlSerializer) ?

I only have 3 or 4 settings to read once at program startup, so it's a
bit of overkill going to all that trouble.

It looks like ini files are going to be my best bet really...
Thanks.
Paul
May 24 '06 #5
On Wed, 24 May 2006 11:59:17 +0100, Paul Cheetham
<PA******@dsl.p ipex.com> wrote:

Maybe you can write a Settings class with the required properties, and
serialize/deserialize it to an xml file (XmlSerializer) ?

I only have 3 or 4 settings to read once at program startup, so it's a
bit of overkill going to all that trouble.

It looks like ini files are going to be my best bet really...
Thanks.
Paul


Well it's only one class with 4 properties and a couple of lines of
code to serialize/deserialize it....
--
Ludwig Stuyck
http://www.coders-lab.be
May 24 '06 #6
You can use registry!

"Paul Cheetham" <PA******@dsl.p ipex.com> wrote in message
news:uN******** ******@TK2MSFTN GP05.phx.gbl...

Hi,

I am developing an application that needs to store some machine-specific
settings. The application is going to be published on the network in order
to keep the clients on the latest version.
Because of this, I am unable to store these settings in the App.Config
file, as this gets updated every time the application does, and there
doesn't appear to be a way of preventing this.

Most of my application settings are kept in the database, but there are
some that I need before the database connection is established.

What I need is a way of storing these so that they can be changed on each
machine, and that can preferably be edited with a text editor.
(I don't want to put them in the registry, because I want it to be easy to
copy the settings from one machine to another)

Is there any support for INI files in .Net?
Is there a better solution?
Thanks.

Paul Cheetham

May 24 '06 #7

As I explained in my original post, I don't want to use the registry.
It's too difficult to copy the settings to another machine or make a
backup, and a real pain to manually edit.

Thanks.
Paul M wrote:
You can use registry!

May 24 '06 #8
Paul Cheetham wrote:

Is there any support for INI files in .Net?
Is there a better solution?


I know you already disregarded the XML serialization option in another
message, but you really should reconsider. With XML serialization of a
properties class you easily gain the ability to add new configuration
options. All you need to do is add a new property to the class.

If nothing else it will get you familiar with XML serialization, which
you will find immensely useful when you have a project that requires a
large amount of configuration information to be written out.

Andrew Faust
May 24 '06 #9
Well, firstly, the best place for these really is the registry.

Since you don't want to go that route, the next best would be some kind
of INI file. The .Net framework doesn't support them, but finding a C#
class to read/write them is as simple as a Google search. The one draw
back is that in a perfect world, only Admins would have write
permission on the Program Files tree, so if these settings change, you
should find a different place to put it beside the program folder.

May 24 '06 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
6734
by: Sam Carleton | last post by:
It is my understanding that in .Net the registry is not the prefered place to save application settings. What has Microsoft put in place to replace it? I thought it was the .config file, but I am unable to figure out how to write to the file. Sam
2
2280
by: Chris Dunaway | last post by:
I have a web service that references a data class library which performs SQL Server access. Since the web service is also a class library, there is no App.Config, only Web.config. Is Web.Config the place I should store the connection string? If I call System.Configuration.ConfigurationSettings.AppConfig from the data class library, will it read the settings from the web.config or will it throw an exception? Thanks
4
2504
by: Marco | last post by:
Hi to All, I'm developing an application in VB .NET. I have a question: what is the best place to save personal settings of my users? I mean, when a user uses my application, it can create a personal profile (e.g. last files opened, custom settings, etc...). What is the best place to save them? At first, I thought to save them in the registry, in the CURRENT_USER section, but I'm not sure every user can have read/write access to it. ...
1
2053
by: Kevin Hodgson | last post by:
I store a users SMTP UserName and Password in a settings class, which is serialized to an XML Settings File. I need to encrypt the password string in some manner. Does anyone have any ideas how to do that and still store it in the XML File? I was thinking of putting the Encryption/Decryption code in the Get/Set methods of the SMTPPassword Property. Sample Code:
4
1803
by: Dave | last post by:
I have some data values that will will rarely change over the life of the program. I don't think it is wise to save it in a database. Is it ok to save them in Properties.Settings if I have many different values? Example I want to save information about the user of the software, eg, name, address, telephone #. -- L. A. Jones
8
2562
by: Merk | last post by:
I'm looking for a safe and maintainable way to store connection string info (connecting to SQL Server 2005 from .NET 2.0 Windows Forms client app); things like server name or IP address and database name. I need to provide the client application with this info for connecting to both a test SQL Server and a production server. I would prefer to NOT hard-code this info into the client application, and App.Config seems rather unsafe as the...
4
1845
by: Ronald S. Cook | last post by:
I want to maintain a list of value/pairs in my Windows application. Where is the best way to store this? Do I want to use Application Settings and have a row for each value pair? There will be approx 10 of them... like a server name/server IP. I want to be able to bring up those values in a list for a user to choose to connect to a different server. Thanks, Ron
4
2044
by: Rob | last post by:
The app.config in VB 2005 appears to be riddled with bugs.... From solution explorer I right click on the Project | Properties... then I use the grid to add the app settings... AND they are saved in the app.config.xml as well, however, the program uses the value that were originally stored in the settings. I have run the Build and Saved the file, I even exited and re-opened the program as well as rebooted the machine.
3
1705
by: Earl | last post by:
..Net Winforms app. I'm currently using the database to store user options. But I wonder if there is a better, faster technique. For a simple example, look at the Visual Studio 2005 Tools Options screens ... are all of these choices being saved XML, a database or where? Is the OK button a "Save" button or are the changes committed at the time you check/uncheck? I'm doing everything Winforms and while my system works well, I'm always looking...
0
9738
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
11001
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
1
10722
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
9500
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
7069
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5735
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
5919
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
4544
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
4137
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.