C# 有关反射和权限的快速问题。净2008

C# 有关反射和权限的快速问题。净2008,c#,.net,vb.net,reflection,C#,.net,Vb.net,Reflection,我有许多项目使用反射来访问和调用一些框架类中的私有或内部成员 这些项目在我的机器上(运行visual basic express 2008)都可以正常工作,但它们是否保证在另一台机器上工作,或者说在网络上工作 我已经查看了ReflectionPermission,但我不确定我是否需要该授权,或者我是否需要将其授权给我的项目 老实说,我并不像这个问题听起来那么愚蠢 运行程序的计算机需要向程序授予ReflectionPermission权限 如果用户从本地文件系统运行您的程序,这将不会有问题。如果用

我有许多项目使用反射来访问和调用一些框架类中的私有或内部成员

这些项目在我的机器上(运行visual basic express 2008)都可以正常工作,但它们是否保证在另一台机器上工作,或者说在网络上工作

我已经查看了ReflectionPermission,但我不确定我是否需要该授权,或者我是否需要将其授权给我的项目


老实说,我并不像这个问题听起来那么愚蠢

运行程序的计算机需要向程序授予ReflectionPermission权限

如果用户从本地文件系统运行您的程序,这将不会有问题。如果用户从网络共享、intranet、Internet等运行您的程序,则可能会出现问题,具体取决于运行程序的计算机的策略。策略还可以考虑诸如发起URL或网络共享、程序是否签名等因素。例如,如果这是内部网应用程序,则网络管理员可以对源于和签署的程序高度信任,而不是对来自内部网的其他部分或未签名的程序进行高度信任。
在任何情况下,它都不在您的控制范围内:您的程序集可以声明它需要ReflectionPermission,但是否授予它取决于目标系统的配置。(不过,如果您的程序是从本地文件系统运行的,这应该不是问题,因为它将以完全信任的方式运行,除非有人真的锁定了机器。)

运行程序的计算机需要向该程序授予ReflectionPermission权限

如果用户从本地文件系统运行您的程序,这将不会有问题。如果用户从网络共享、intranet、Internet等运行您的程序,则可能会出现问题,具体取决于运行程序的计算机的策略。策略还可以考虑诸如发起URL或网络共享、程序是否签名等因素。例如,如果这是内部网应用程序,则网络管理员可以对源于和签署的程序高度信任,而不是对来自内部网的其他部分或未签名的程序进行高度信任。
在任何情况下,它都不在您的控制范围内:您的程序集可以声明它需要ReflectionPermission,但是否授予它取决于目标系统的配置。(但同样,如果您的程序从本地文件系统运行,这应该不是问题,因为它将以完全信任的方式运行,除非有人真的锁定了机器。)

如果您可以执行代码,那么您应该能够使用反射来查询它

从我对的理解来看,您似乎需要使用此选项来访问对象的所有成员:

如果没有ReflectionPermission,代码可以使用reflection仅访问对象的公共成员。具有ReflectionPermission和适当ReflectionPermissionFlag标志的代码可以访问对象的受保护成员和私有成员


如果您可以执行代码,那么您应该能够使用反射来查询它

从我对的理解来看,您似乎需要使用此选项来访问对象的所有成员:

如果没有ReflectionPermission,代码可以使用reflection仅访问对象的公共成员。具有ReflectionPermission和适当ReflectionPermissionFlag标志的代码可以访问对象的受保护成员和私有成员


只要从本地驱动器运行,它们在任何机器上都可以正常工作。默认情况下,从.NET上的网络共享运行到3.5SP1版本的可执行文件将以减少信任模式(Internet或Intranet)运行,并且您将无法访问ReflectionPermission,这意味着您将无法访问受保护或私有成员

从3.5SP1开始,他们改变了可执行文件的操作,使其在直接运行时获得完全信任(而不是通过Assembly.Load和类似程序加载到另一个进程中)


您还可以使用作为框架一部分的caspol工具向程序集授予特定权限。有关caspol的更多信息,请参阅

只要从本地驱动器运行,它们在任何机器上都可以正常工作。默认情况下,从.NET上的网络共享运行到3.5SP1版本的可执行文件将以减少信任模式(Internet或Intranet)运行,并且您将无法访问ReflectionPermission,这意味着您将无法访问受保护或私有成员

从3.5SP1开始,他们改变了可执行文件的操作,使其在直接运行时获得完全信任(而不是通过Assembly.Load和类似程序加载到另一个进程中)

您还可以使用作为框架一部分的caspol工具向程序集授予特定权限。有关caspol的更多信息,请参阅