Edit Skype's config.xml

本文关键字:config xml Skype Edit | 更新日期: 2023-09-27 18:03:03

我正试图从代码编辑Skype的config.xml文件。它工作得很好,但在更改Skype后删除它并生成另一个,撤消我所有的更改。例如,代码:

public Core()
{
    try
    {
        var processes = Process.GetProcessesByName("Skype");
        if (processes.Length == 0)
        {
            AddRegistryKeys();
            RemovePlaceholder();
        }
        else
        {
            RestartSkypeAndRun(processes[0],
                () =>
                {
                    AddRegistryKeys();
                    RemovePlaceholder();
                });
        }
        Environment.Exit(0);
    }
    catch (Exception ex)
    {
        MessageBox.Show(string.Format("{0} - {1}", ex.GetType(), ex.Message), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        Environment.Exit(-1);
    }
}
private static void RemovePlaceholder()
{
    string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
    string skypePath = Path.Combine(appDataPath, "Skype");
    foreach (var configPath in Directory.EnumerateFiles(skypePath, "config.xml", SearchOption.AllDirectories))
    {
        string userConfig = File.ReadAllText(configPath);
        string fixedConfig = userConfig.Remove("<AdvertPlaceholder>1</AdvertPlaceholder>");
        File.Move(configPath, configPath + ".bak");
        File.WriteAllText(configPath, fixedConfig);
    }
}

private static void RestartSkypeAndRun(Process skypeProc, Action action)
{
    string skypeExePath = skypeProc.Modules[0].FileName;
    skypeProc.Kill();
    skypeProc.WaitForExit();
    Thread.Sleep(TimeSpan.FromMilliseconds(500)); //just in case
    action();
    Process.Start(skypeExePath);
}

那么怎么做呢?我不知道,除了阻止文件修改,例如改变ACL和文件的其他权限,设置只读属性等

Edit Skype's config.xml

参见https://www.safaribooksonline.com/library/view/skype-hacks/0596101899/ch04s04.html

"在对config.xml(或shared.xml)进行任何更改之前,始终停止Skype运行(通过右键单击Skype在系统托盘中并选择退出),因为即使您的编辑器可能会告诉您它已保存了更新版本的config.xml,您可能会发现Skype忽略了您的更改,并且当您重新打开config.xml时它们丢失了。编辑任何Skype的配置文件的过程应该是这样的:退出Skype(即停止运行),编辑(或删除)配置文件,保存更改,并重新启动Skype。"

C:'Documents and Settings'Username'Application Data'Skype'Skypename'config.xml

"还有另一个文件,shared.xml, Skype从中获取配置信息,这些信息对同一台Windows机器上的Skype所有用户都是通用的…您还可以编辑这个文件来调整Skype的行为,但是调整的范围比config.xml要有限得多。您通常可以在每个平台上的这些位置找到shared.xml:

Windows (version 1.3及之前)

C:'Documents and Settings'All Users'Application Data'Skype'shared.xml

Windows(1.4及以后版本)

C:'Documents and Settings'Username'Application Data'Skype'shared.xml

"