4

私のWinFormsアプリケーションは、さまざまな設定をアセンブリ名でユーザー分離ストレージに格納し、アセンブリには厳密な名前が付けられています。私が理解しているように、分離はアセンブリバージョンの大部分で行われるため、アセンブリバージョンを2.0から2.nに変更しても、別の分離ストレージファイルが使用されることはありません。

ただし、アセンブリバージョンを2.xから3.0にアップグレードしようとしています。これは、新しい分離ストレージストアが使用されることを意味します。設定を2.xから3に移行できるようにしたいと思います。

別のアセンブリの分離されたストレージにアクセスする方法はありますか?私はこれらの線に沿って何かを試しました:

var thisAssembly = Assembly.GetCallingAssembly();
var thisAssemblyName = thisAssembly.GetName();
var publicKey = thisAssemblyName.GetPublicKey();

var blob = new StrongNamePublicKeyBlob(publicKey);
var previousStrongName = new StrongName(blob, "appName", new Version(2, 7, 0, 0));

var previousVersionEvidence = new Evidence();
previousVersionEvidence.AddAssembly("appName");
previousVersionEvidence.AddAssembly(new Version(2, 7, 0, 0));
previousVersionEvidence.AddAssembly(previousStrongName);

var scope = IsolatedStorageScope.Assembly | IsolatedStorageScope.User;
var container = IsolatedStorageFile.GetStore(scope, previousVersionEvidence, null, previousVersionEvidence, null);

新しいアプリケーションは、同じストロングネームキーで署名されています。また、新しいアセンブリに次の属性を追加してみました。

[assembly:IsolatedStorageFilePermission(SecurityAction.RequestMinimum, Unrestricted=true, UsageAllowed=IsolatedStorageContainment.UnrestrictedIsolatedStorage)]

ただし、GetStoreを呼び出すと、System.Security.Policy.PolicyExceptionが発生します。実行権限を取得できません。

4

0 に答える 0