代码签名破坏了隔离存储。

5
我正在使用IsolatedStorageFile.GetMachineStoreForAssembly()方法通过独立存储来存储我的应用程序设置。
在我的应用程序已经部署之后,我购买了一个数字证书来签名我的软件。然而,新版本与证书无法读取旧的设置文件。大概是因为签名改变了应用程序的标识。
我该如何访问旧的设置,这些设置是从旧版本(未签名)中编写的?是否可以通过传递旧标识来获取旧程序集的机器存储?
1个回答

2
机器商店是通过应用程序身份标识而不仅仅是名称进行识别的。
在签署代码后,您的publicKeyToken会发生变化。
参考资料:
http://msdn.microsoft.com/en-US/library/system.io.isolatedstorage.isolatedstoragefile.getmachinestoreforassembly(v=vs.80).aspx http://msdn.microsoft.com/en-us/library/b0yt6ck0.aspx
编辑 -
这是孤立存储的缺点之一。我不使用它来存储永久设置,如果必要,无法重新输入。对于较长期的存储,我在ApplicationData文件夹下创建一个我的应用程序文件夹Environment.GetFolderPath(ApplicationData)并将我的文件存储在那里。
话虽如此,我发现这篇文章有时可以用来定位文件夹,如果您知道文件名。

这似乎没有提供任何不在问题中的信息,并且它没有回答“我如何访问旧设置?”的问题。它可能作为评论很好,但作为答案则-1。 - Ben Voigt
本编辑了答案,现在它确实回答了问题。 链接文章中的解决方案是,如果您知道文件的名称(我知道),则可以获取当前程序集的隔离存储位置。从那里,您可以猜测所有程序集的隔离存储位置,并查找具有正确名称的文件。 听起来像是一个hack,但我想在大多数情况下它会起作用。也许有人知道更好的解决方案呢? - LTR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接