访问其他应用程序的设置

时间:2010-03-17 19:26:26

标签: c# wpf clickonce

我有应用程序1和应用程序2. App2需要验证App1是否已安装,如果是,则需要从App1设置访问属性。

最好的方法是什么?

更新 首先,我很抱歉从不接受这个答案,我知道它现在已经超过一年了,但是在问到这个之后我立刻就立刻转向,然后项目改变了,等等等等。 Mea culpa ...

我现在重新开始,我仍然需要解决这个问题,但现在应用程序是通过ClickOnce部署的,所以我实际上并不知道它们的位置。任何建议,将不胜感激。我保证这次我会选择一个答案。

2 个答案:

答案 0 :(得分:2)

ConfigurationManager.OpenExeConfiguration的文档有一个示例,即读取另一个exe的.config文件并访问AppSettings。这是:

// Get the application path.
string exePath = System.IO.Path.Combine(
    Environment.CurrentDirectory, "ConfigurationManager.exe");

// Get the configuration file.
System.Configuration.Configuration config =
  ConfigurationManager.OpenExeConfiguration(exePath);

// Get the AppSetins section.
AppSettingsSection appSettingSection = config.AppSettings;

至于检查App1是否已安装,您可以在安装过程中在注册表中写入一个值,并在App2中检查它(并在卸载期间删除该值)。

答案 1 :(得分:0)

这是一种痛苦,我可以告诉你很多。我发现执行此操作的最佳方法是序列化Settingsclass并使用XML(下面的代码)。但首先尝试此页面: http://cf-bill.blogspot.com/2007/10/visual-studio-sharing-one-file-between.html

public class Settings
{
    public static string ConfigFile{get{return "Config.XML";}}
    public string Property1 { get; set; }

    /// <summary>
    /// Saves the settings to the Xml-file
    /// </summary>
    public void Save()
    {
        XmlSerializer serializer = new XmlSerializer(typeof(Settings));
        using (TextWriter reader = new StreamWriter(ConfigFile))
        {
            serializer.Serialize(reader, this);
        }
    }
    /// <summary>
    /// Reloads the settings from the Xml-file
    /// </summary>
    /// <returns>Settings loaded from file</returns>
    public static Settings Load()
    {
        XmlSerializer serializer = new XmlSerializer(typeof(Settings));
        using (TextReader reader = new StreamReader(ConfigFile))
        {
            return serializer.Deserialize(reader) as Settings;
        }
    }
}