1

間違った道を進む前に、ポインタを探しているだけです。HKEY_LOCAL_MACHINEとHKEY_CURRENT_USERの両方でユーザーレジストリを開き、読み取り、書き込み、削除する小さなC#コンソールアプリを作成しました

もちろん、自分のPCとすべてのテストPCで動作するようになりましたが、クライアントの1つが.exeを実行しようとするとエラーが発生します。

System.Security.SecurityException:タイプ'System.Security.Permissions.RegistryPermission、mscorlib、Version = 2.0.0.0、Culture = neutral、PublicKeyToken=b77a5c561934e089'のアクセス許可の要求が失敗しました。

System.Security.CodeAccessSecurityEngine.Check(Object request、StackCrawlMark&stackMark、Boolean isPermSet)at System.Security.CodeAccessPermission.Demand()at Microsoft.Win32.RegistryKey.CheckSubKeyReadPermission(String subkeyName)at Microsoft.Win32.RegistryKey.CheckOpenSubKeyPermission(String subkeyName、Boolean> subKeyWritable)at Microsoft.Win32.RegistryKey.OpenSubKey(String name、Boolean writable)at EstateMasterClearReg.Program.Main(String [] args)

失敗したアクションは次のとおりです。

要求する。失敗した最初のアクセス許可のタイプは次のとおりです。System.Security.Permissions.RegistryPermission失敗したアセンブリのゾーンは次のとおりです。イントラネット

クライアントマシンでこれをテストすることはできません(そして、.exeがローカルで実行されており、管理者としてログインしていると言われています)ので、アプリが任意のマシンで実行されることを確認するためにできることはありますか?マシーン?

厳密な名前キーとAllowPartiallyTrustedCallersを使用する必要がありますか、それともSystem.Security.Permissions.RegistryPermissionを使用する必要がありますか?

ご協力いただきありがとうございます。

4

1 に答える 1

2

ネットワーク上で実行可能ファイルを実行している可能性があります。ローカルハードドライブにコピーして、もう一度実行してもらいます。実行可能ファイルに割り当てられるアクセス許可は、ネットワーク共有から実行する場合とローカルファイルシステムから実行する場合で異なります。

または、デフォルトのセキュリティ設定を変更して、ローカルで実行されている場合でも、イントラネットゾーンの一部と見なされる可能性があります。それらもチェックしてください。

ここでのヒントも役立つ場合があります。

http://blogs.msdn.com/shawnfa/archive/2003/06/20/57023.aspx

アセンブリに厳密な名前を付ける場合でも、アセンブリに適切なアクセス許可を与えるためにローカルセキュリティポリシーを変更する必要があることに注意してください。厳密な名前だけでは、必要な追加の許可は付与されません。

于 2009-05-20T01:51:20.363 に答える