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和文件的其他权限,设置只读属性等
参见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
"