0

アプリケーションのクリックワンス インストールの作成に取り組んでいます。

プロジェクトのプロパティの場合、[セキュリティ] タブで ClickOnce セキュリティ設定を完全信頼で有効にしています。ネットワーク ドライブに公開し、インストールを実行します。インストールは成功しましたが、アプリケーションを実行すると次のエラーが発生します。

ここに画像の説明を入力

.Net コードのPos を別の AppDomain で実行しています (.net 4 のデフォルト セキュリティ ポリシーの問題のため)。clickonce なしでローカル システムで正常に動作します。私のアプリケーションは Prism を使用しているため、マニフェストを変更して、動的にロードされるモジュールを含める必要がありました。これは、私が作成した AppDomain が完全に信頼されていないことに何らかの形で関連しています。

これは私が AppDomain を作成する方法です

AppDomainSetup currentAppDomainSetup = AppDomain.CurrentDomain.SetupInformation;
AppDomainSetup newAppDomainSetup = new AppDomainSetup()
{
    ApplicationBase = currentAppDomainSetup.ApplicationBase,
    LoaderOptimization = currentAppDomainSetup.LoaderOptimization,
    ConfigurationFile = currentAppDomainSetup.ConfigurationFile,
    PrivateBinPath = @"Modules"  // need to set this so that the new AppDomain can see the prism modules
};
newAppDomainSetup.SetCompatibilitySwitches(new[] { "NetFx40_LegacySecurityPolicy" }); // required for POS for .Net to function properly
_posAppDomain = AppDomain.CreateDomain("POS Hardware AppDomain", null, newAppDomainSetup);
// Error happens on the following line. Note that type T is always in same assembly that AppDomain was created in.
    T hardware = (T)PosAppDomain.CreateInstanceFromAndUnwrap(Assembly.GetAssembly(typeof(T)).Location, typeof(T).FullName);

不足しているセキュリティ設定はありますか?

近づいていると思います。私が作成した AppDomain は、clickonce なしで実行すると完全な信頼で実行されますが、clickonce で実行すると完全な信頼では実行されません....だから今、完全な信頼でそれを取得する方法を見つけようとしています。

4

1 に答える 1

1

理解した

とを追加する必要がEvidenceありましたPermissionSet...

Evidence evidence = new Evidence();
evidence.AddHostEvidence(new Zone(SecurityZone.MyComputer));
PermissionSet ps = SecurityManager.GetStandardSandbox(evidence);
AppDomainSetup currentAppDomainSetup = AppDomain.CurrentDomain.SetupInformation;
AppDomainSetup newAppDomainSetup = new AppDomainSetup()
{
    ApplicationBase = currentAppDomainSetup.ApplicationBase,
    LoaderOptimization = currentAppDomainSetup.LoaderOptimization,
    ConfigurationFile = currentAppDomainSetup.ConfigurationFile,
    PrivateBinPath = @"Modules"  // need to set this so that the new AppDomain can see the prism modules
};
newAppDomainSetup.SetCompatibilitySwitches(new[] { "NetFx40_LegacySecurityPolicy" }); // required for POS for .Net to function properly
于 2012-09-27T15:23:35.143 に答える