使用不安全代码会产生什么影响

2024-02-26

除了代码本身可以直接访问内存这一事实之外。使用“/unsafe”编译器标志和“fixed”关键字还有什么其他含义?是否有与我的 .exe 的代码签名和部署相关的任何连锁效应(我的应用程序仅限桌面)?

(这不是我是否应该这样做的问题,why我的问题涵盖了here https://stackoverflow.com/questions/702188/can-this-code-be-optimised)


您可以将其影响分为两个部分。

首先是它如何影响您的应用程序环境。使用不安全的代码要求您的程序集在完全信任的环境中运行。无法在受限环境(例如某些 Click Once 安全设置)中运行。原因是不安全的代码阻止 CLR 确保类型安全。尽管没有安全限制,但单击一次应该不会有问题。

第二个是它对你的编码方式意味着什么。使用不安全代码通常涉及使用指针,特别是使用它们通过 PInvoke 执行高级编组。不过,这些行为本质上并没有什么错误。它只是需要比“安全”代码更多地了解 CLR 和编组。对象固定是一个很好的例子,在开始使用这些功能之前,您需要牢牢掌握这些知识。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用不安全代码会产生什么影响 的相关文章

  • project.json 等效于 InternalsVisibleTo

    Net Core 的项目 json https learn microsoft com en us dotnet articles core tools project json copyright允许配置传统 Net 应用程序使用通常放置
  • Lightspeed 与 NHibernate

    有什么体验光速 http www mindscape co nz products LightSpeed comparison aspx Mindscape 提供的比较并没有过多说明 NHibernate Lightspeed 看起来很灵活
  • 点击浏览器后退按钮时如何刷新 ASP .NET MVC 页面

    我刚刚发现 当我单击任何 ASP NET MVC 页面上的浏览器后退按钮时 没有任何反应 并且页面不会更新 并且只有当您单击 F5 时才会更新 主要问题是我对页面的 DOM 进行了一些更改 即添加表格行 选择单选按钮等 当我通过点击浏览器后
  • 在 .Net 应用程序中使用 Active Directory Web 服务

    我正在尝试构建一个 Net 应用程序来询问 Active Directory 编辑 我需要使用 Web 服务来执行此操作 因为我将使用需要使用 Web 服务的第三方工作流工具从 Sharepoint 工作流与 AD 进行通信 根据我的研究
  • Api 控制器中长时间运行的任务(使用 Web API,自托管 OWIN)

    我想在自托管 OWIN 环境中的 ApiController 中运行长时间运行的任务 例如 4 5 分钟 但是 我想在开始该任务后 一旦开始长时间运行的任务 就发回响应 而不等待它完成 这个长时间运行的任务与 HTTP 无关 并且顺序运行一
  • 如何在没有 Startup 类的情况下以编程方式启动 .NET 6 最小 API

    我正在尝试对我们的提供商项目实施 PactNet 合同测试 然而问题是 我们使用的是 Minimal API 因此我们没有将 Startup cs 和 Program cs 类全部整合到一个 Program cs 中 这提出了一个问题 因为
  • 如果.Net Core可以在Windows上运行,为什么不能在.Net Framework中引用.Net Core DLL?

    我明白为什么 Net Framework 可能会在 Net Core IE 中导致问题 因为不存在特定于 Windows 平台的 API 但是为什么不能直接引用 Net Core 作为 Net Framework 中的库呢 如果 Net C
  • 在 C# 中将位从 ulong 复制到 long

    所以看来 NET 性能计数器类型 http msdn microsoft com en us library system diagnostics performancecounter aspx有一个恼人的问题 它暴露了long对于计数器
  • 如何打开 Windows 资源管理器窗口并选择特定文件夹

    我有一个 winform 应用程序 这个 winform 应用程序创建了几个文件 我想在我的应用程序中实现 查找目标 功能来显示这些文件 这些文件位于同一文件夹中 看图片 假设我创建了几个文件 C Test 文件夹 该文件夹包含以下文件 C
  • 对于 HTTPS,Request.UrlReferrer 为 NULL

    我在用 Request UrlReferrer AbsoluteUri 在我的项目中获取托管我的应用程序的 URL 如果我从 http 主机重定向 我可以获得 URL 但如果我从 https 主机重定向 我将得到 null 我怎样才能得到
  • 为什么 C# 4.0 中的可选参数需要编译时常量?

    还有一种方法可以使用可选方法参数的运行时值吗 可选参数必须是常量 因为它们是作为属性值写出的 因此 它们继承了属性值所具有的所有限制 无法直接对运行时值进行编码 但是您可以接近以下模式 public void MyApi SomeType
  • 限制对记录的访问。基于声明的权限是个好主意吗

    在 net 基于声明的身份框架中 如果我想限制用户对某个帐户 特定帐户 123456 执行操作 查看或编辑 我说的是商业实体 例如银行帐户 创建索赔是个好主意吗对于他们可以查看或编辑的每个帐户 一组中有很多索赔有什么缺点吗 系统管理员可能有
  • 如何在Web网格的列中编写IF条件

    我在 WEB GRID 列中创建 if 条件时遇到错误 所以 请帮助改进我的代码并解决我的问题 grid Column Status format item gt
  • 使用 DependencyResolver 通过 MVC 3 进行控制器实例化时出错

    我正在使用 MVC 3 并在应用程序启动时使用以下代码 UnityContainer container new UnityContainer new UnityMappings container DependencyResolver S
  • 如何在 wpf 应用程序的代码隐藏中创建集合视图源

    我有以下代码 public partial class MainWindow Window public MainWindow InitializeComponent var entities new DemoEntities var de
  • 模拟对象 - 将所有方法声明为虚拟方法还是使用接口?

    与 Java 不同 net 中的方法默认不是虚拟的 为了使用大多数模拟对象框架 您要么必须将要在模拟上使用的方法标记为 真实 对象上的虚拟方法 要么必须有一个可以模拟被测试类将使用的接口接受代替执行 将每个方法标记为虚拟似乎是一种不好的形式
  • F# 命名约定

    F 是否有 官方 命名 大小写约定 我总是怀疑是否使用 C 风格 Class MyFunctionName or Module my function name 在 F 中 您应该混合 BCL 类和 F 库类 它们具有不同的大小写 并且代码
  • 使用 NServiceBus FileShareDataBus 时清理文件

    我在 NServiceBus 3 中使用 FileShareDataBus 是否支持清理数据总线文件 如果不是 实现此目的的最佳实践是什么 例如如何确保该文件不是错误队列中消息的一部分 鉴于不可能知道消息在错误队列中停留多长时间 我通常会在
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐