首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

哪个更好/更安全使用:HandleRef或IntPtr(来自Microsoft的较新源代码不再使用HandleRef)

在云计算领域中,HandleRef和IntPtr是用于处理句柄的两个常见的数据类型。HandleRef是一个封装了句柄的引用类型,而IntPtr是一个原始的指针类型。

在使用HandleRef和IntPtr时,需要根据具体的场景和需求来选择合适的类型。下面是对HandleRef和IntPtr的比较和使用建议:

HandleRef:

  • 概念:HandleRef是一个引用类型,用于封装句柄的引用。它提供了一种安全的方式来传递句柄,确保句柄在使用过程中不会被意外释放。
  • 分类:HandleRef属于.NET Framework中的类型,用于处理句柄。
  • 优势:HandleRef提供了更安全的句柄传递方式,可以防止句柄被意外释放,提高了代码的健壮性和可靠性。
  • 应用场景:HandleRef常用于需要传递句柄的情况,例如与非托管代码交互、调用系统API等。
  • 推荐的腾讯云相关产品:在腾讯云的产品中,HandleRef的使用与具体产品无关,因为HandleRef是.NET Framework中的类型,而腾讯云的产品主要是基于云计算和云服务的。

IntPtr:

  • 概念:IntPtr是一个原始的指针类型,用于表示指向内存地址的指针。它可以用于与非托管代码进行交互,执行底层操作。
  • 分类:IntPtr属于.NET Framework中的类型,用于处理指针。
  • 优势:IntPtr提供了直接操作内存地址的能力,适用于与非托管代码交互、进行底层操作等场景。
  • 应用场景:IntPtr常用于需要直接操作内存地址的情况,例如与非托管代码交互、进行底层操作等。
  • 推荐的腾讯云相关产品:在腾讯云的产品中,IntPtr的使用与具体产品无关,因为IntPtr是.NET Framework中的类型,而腾讯云的产品主要是基于云计算和云服务的。

总结:

HandleRef和IntPtr都是用于处理句柄的数据类型,但在具体使用时需要根据场景和需求进行选择。HandleRef提供了更安全的句柄传递方式,适用于需要传递句柄的情况;而IntPtr提供了直接操作内存地址的能力,适用于与非托管代码交互、进行底层操作等场景。

请注意,以上答案仅供参考,具体的选择还需要根据实际情况和需求来决定。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于WPF空域问题

空域概念意味着,在应用程序生命周期内,所有试图在该像素之上进行渲染图层其他窗口都必须属于同一互操作技术。...控件,你会发现winform控件悬浮于wpf 控件上方,或者设置AllowsTransparency = true 你使用winform控件会透明 很蛋疼 二、我遇到空域问题 之前有个客户要做视频解决方案...,要求是要在多个视频窗口上贴上标签,比如人员名称等,但是由于空域问题,导致贴图没有显示,贼烦人 三、我尝试解决办法 1.Microsoft.DwayneNeed 怎么说呢 ,这个库我个人没觉得有多好用...BuildWindowCore(HandleRef hwndParent)         {             HandleRef href = new HandleRef();            ..., 六、最后 win10情况下使用此方法基本没有问题 win7下需要特殊处理,首先不能应用areo效果,其次需要给嵌入窗口设置一个背景色 这是我目前遇到情况,希望可以给大家一些帮助,或者大家有更好解决方案

1.5K60
  • 干货 | 绕过AMSI实现免杀研究和思路

    它支持允许文件和内存流扫描、内容源 URL/IP 信誉检查和其他技术调用结构。AMSI 还支持会话概念,以便反恶意软件供应商可以关联不同扫描请求。...例如,可以将恶意负载不同片段关联起来做出明智决定,而仅通过孤立地查看这些片段就很难做出决定。 在Windows Server 2016和Win10上已经默认安装并启用。...它提供了通用标准接口(COM接口、Win32 API)其中COM接口,是为杀软供应商提供,方便杀软厂商接入自身针对恶意软件识别能力。有不少安全厂商已经接入了AMSI接口。...官方架构图: 目前AMSI功能已集成到Windows 10这些组件中 •用户帐户控制 UAC(EXE、COM、MSI ActiveX 安装提升)•PowerShell(脚本、交互使用和动态代码评估...如果该函数成功,那么就应当返回S_OK(0x00000000),否则应该返回HRESULT错误代码

    89930

    Cobalt Strike Powershell 过360+Defender等杀软上线

    图片中命令跟上面我写命令不一样是因为我使用了混淆绕杀软,可以不管,后面会讲。 ? 这次还是不完美,差一个,都是命令没有关键字替换,现在就是用混淆解决。 ?...文章目的也不是直接给大家使用,不是最新版本直接使用确实没问题,对于最新版杀软这里思路还是可用,只是需要加入更多混淆,或者加一些编码进去。...0x05 扩展 下面讲下执行远程执行脚本时代码混淆,有的时候直接执行cs生成语句杀软会拦截。...www.cnblogs.com/linuxsec/articles/7384582.html 免责申明: 本项目仅进行信息搜集,漏洞探测工作,无漏洞利用、攻击性行为,发文初衷为仅为方便安全人员对授权项目完成测试工作和学习交流使用...请使用者遵守当地相关法律,勿用于非授权测试,勿用于非授权测试,勿用于非授权测试~~(重要事情说三遍)~~,如作他用所承受法律责任一概与凌晨安全无关!!!

    2.8K20

    WPF 程序鼠标在窗口之外时候,控件拿到鼠标位置在哪里?

    ---- 可用于演示 DEMO 直接使用 Visual Studio 2019 创建一个空 WPF 应用程序。默认 .NET Core 版本 WPF 会带一个文本框和一个按钮。...如果不知道客户区是什么,可以阅读下面我另一篇博客: WPF 使用 WindowChrome,在自定义窗口标题栏同时最大程度保留原生窗口样式(类似 UWP/Chrome) 在以上图中,我拖动改变了窗口位置...1 2 [DllImport("user32.dll")] static extern bool ClientToScreen(IntPtr hWnd, ref Point lpPoint); 此方法需要使用到一个窗口句柄参数...- Stack Overflow ClientToScreen function (winuser.h) - Microsoft Docs 本文会经常更新,请阅读原文: https://blog.walterlv.com.../post/wpf-mouse-position-when-mouse-is-out-of-window.html ,以避免陈旧错误知识误导,同时有更好阅读体验。

    58840

    Unity3d底层数据传递分析

    想要避免这种内存分配,可以返回一个IntPtr,并且用Marshal类方法操作指针。关于类与结构体,在后面有详细论述。...依照上面的非托管代码定义,结构体包装可以是: ? 结构体在非托管代码中,可以作为值返回,但不可以返回refout。所以要想返回指向结构指针,就必须使用IntPtr,或在外部定义unsafe。...成员变量 对于类与结构体成员变量,乖巧做法是:不要将包含引用类型(比如说类)结构体传给非托管代码。因为非托管代码不能安全操作非托管引用,托管代码也不一定会深封送数据。...需要注意是,如此使用必须保证托管代码中有内存分配,例如: ? 五 GC安全 由于Marshalling是通过数据拷贝实现,仔细看来其实不太靠谱。...很有可能非托管代码C.OperatOnHandle依然在使用_handle,因为已经跨界了,托管代码是不可能知道这件事。解决办法是在这种情况下使用HandleRef来替代IntPtr

    1.4K20

    内网渗透 | 了解和防御Mimikatz抓取密码原理

    调试权限是一种安全策略设置,允许用户将调试器附加到进程内核。管理员可以修改用户组安全策略以包含删除此功能。正在调试自己应用程序开发人员不需要此用户权限。...代码,这里向三好学生大佬表示衷心感谢 •使用powershell实现注册表键值修改 修改键值为1 #!...这个受保护用户组是在win2012之后引进一个安全组(win2008及以前系统在安装了KB2871997补丁之后也会增加这个安全组)。...这个安全设置就是为了防止明文存储在内存中和ntlm hash泄露,原因大概是因为通过kerberos认证会安全。加入方法也比较简单,只需要把需要保护用户添加进这个受保护用户组即可。 ?...这个SID对于限制横向渗透远程连接并没有任何实质作用,它主要作用是方便防止通过网络使用本地帐户登录。

    6.7K10

    CS Powershell Beacon分析

    前言 这里分析为Cobalt StrikePowershell Beacon Payload 主要目的为方便更好免杀和学习一下样本分析。...代码不多,可以看到主要分为3个部分 第一部分 我们从主入口IF部分开始分析: [IntPtr]::size -eq 8 这里返回一个True; [IntPtr]::size功能为获取当前powershell...当我们实例化委托时,我们可以将其实例与具有兼容签名和返回类型任何方法相关联。 那么可以通过委托实例调用(调用)该方法。...例如虚拟方法使用HasThis. 接下来是使用SetImplementationFlags设置实现标志。...传递属性是MethodImplAttributes: 这里定义了2个值: Runtime:指定方法实现由运行时提供 Managed:指定在托管代码中实现该方法。

    1.8K20

    C++CLI(二)Mono C++CLI Native调用和PInvoke调用

    +程序,需要使用P/Invoke方式,这两者不兼容使得本来非常方便C++/CLI在Unity下毫无用武之地,希望有一天MS能够给Mono CLR一片土地,方便你我他,还有就是高高兴兴写了半个月MS...CLR以为能在Unity下使用了,结果一Run就炸,所以说以后代码未动,单元测试一定要先写啊,这片区代码需要全部重构了,血与泪教训。...For example: 公共语言接口(CLI)设计目的是使与现有代码进行互操作变得“容易”。原则上,您所需要做就是为要调用代码创建一个DllImport函数声明,运行时执行函数。...,通常情况下,除非你应用程序具有适当安全权限,否则不能调用dllimport函数,应用程序是在本地机器上运行。...如果您从网络共享web站点(类似于Java applet)运行它,那么程序就会抛出SecurityException异常。

    3.5K30

    CS Powershell Beacon分析

    前言 这里分析为Cobalt StrikePowershell Beacon Payload  主要目的为方便更好免杀和学习一下样本分析。...代码不多,可以看到主要分为3个部分 第一部分 我们从主入口IF部分开始分析: [IntPtr]::size -eq 8 这里返回一个True; [IntPtr]::size功能为获取当前powershell...当我们实例化委托时,我们可以将其实例与具有兼容签名和返回类型任何方法相关联。 那么可以通过委托实例调用(调用)该方法。...例如虚拟方法使用HasThis. 接下来是使用SetImplementationFlags设置实现标志。...传递属性是MethodImplAttributes: 这里定义了2个值: Runtime:指定方法实现由运行时提供 Managed:指定在托管代码中实现该方法。

    1.7K50

    C#Process类调用第三方插件实现PDF文件转SWF文件

    在项目开发过程中,有时会需要用到调用第三方程序实现本系统某一些功能,例如本文中需要使用swftools插件,那么如何在程序中使用这个插件,并且该插件是如何将PDF文件转化为SWF文件呢...1.Start()方法:启动(重用)此 Process 组件 StartInfo 属性指定进程资源,并将其与该组件关联。...///如果句柄存储在当前进程对象中,则使用它。          ///注意,我们存储在当前进程对象中句柄将具有我们需要所有访问权限。...System.Diagnostics.Process,并介绍了该类一些常用方法底层实现代码,如果需要对该类进行详细了解,可以根据MSDN和.NET底层源码相关注释和文章进行细致学习。...在项目开发中,任何一个功能是无法做法完成所有的功能,在编码功能时,只能尽可能考虑到方法通用性,在理解了某一个类和某一个插件基本原理和使用方法后,可以根据对应API进行添加新功能。

    1.6K60

    Cobaltstrike4.0——记一次上头powershell上线分析

    随后进入一个for循环,for循环里面是对var_code里面的字节逐个做异,异35(异或是模2同余运算,所以加解密操作一样,这里是解密) 这里其实是在做还原,只不过因为异特殊性,异就是2...进制里面的mod2同余操作,所以这里在生成payload时候加密操作也是和35做异,最后解密也是异。...到这我有点懵了,放个dll文件放这干啥, 这里我们回过头去看下后续对该dll二进制文件处理,也就是异解密后代码: 二、分析解密code之后相关执行逻辑: If (\[IntPtr\]::size...当然不置可否,如果只是从解决问题角度肯定走第一条路更好。 这里笔者从第二条思路展开写下自己一个学习过程,因为第一条思路其实是比较无聊,就是硬肯汇编代码,并且没有思路,不好理解。...开辟空间之类,具体其DllMain中代码实现逻辑是怎样,之后我们结合csteamserver端源码看,从beacon和teamserver之间详细通信过程来看会更好理解些。

    1.3K10

    WPF 已知问题 开启 WM_Pointer 消息之后 获取副屏触摸数据坐标偏移

    本文记录 WPF 触摸一个已知问题,仅在开启 WM_Pointer 消息之后,将应用程序运行在包含多个屏幕带触摸屏设备上,如此时在非主屏幕触摸屏上进行触摸,使用 GetStylusPoint ...通过 GetStylusPoint GetIntermediateTouchPoints 等方法获取触摸点信息时,可以看到触摸点信息存在偏差,偏差坐标差值刚好是整个屏幕距离,也就是差了 N 个屏幕距离...且所偏差坐标差值刚好是整个屏幕距离,如果刚好你两个屏幕虚拟尺寸(非物理尺寸)是一样大,那这个偏差就更好看出来了,如下图 问题原因: 此问题是在 WPF 框架中 HwndPointerInputProvider.cs...代码实现不正确导致,和 WM_Pointer 本身关系不大,仅仅只是因为这个代码实现只有开启了 WM_Pointer 才会进入。...合入之后,我打出了 NuGet 包,大家可以通过编辑 csproj 项目文件,添加以下代码使用到此测试版本 WPF 框架 <PackageReference Include

    28710

    WPF 让窗口激活作为前台最上层窗口方法

    在 WPF 中,如果想要使用代码控制,让某个窗口作为当前用户输入逻辑焦点窗口,也就是在当前用户活动窗口最上层窗口,默认使用 Activate 方法,通过这个方法在大部分设备都可以做到激活窗口...但是在一些特殊设备上,使用下面代码调起窗口只是在任务栏闪烁图标,而没有让窗口放在最上层 window.Show(); window.Activate(); 在大部分设备上,通过 Show 和 Activate...组合可以让窗口作为当前用户活动,即使窗口之前是最小化隐藏,都可以通过 Show 方法显示 但是某些设备窗口被盖在其他窗口下面,此时窗口 window.IsActive 还是 true 但是调用...window.Topmost = true; window.Topmost = false; 我测试了几个原本没有让窗口放在上层设备,使用上面的代码可以设置...,但是我不了解设置上面代码可能坑是什么 附带 walterlv 测试工具,可以用来拿到当前 GetForegroundWindow 是哪个 walterlv 工具 另外少君小伙伴写了一个有趣

    3.2K11

    解决 WPF 嵌套子窗口在改变窗口大小时候闪烁问题

    因为 Win32 窗口句柄是可以跨进程传递,所以可以用来实现跨进程 UI。不过,本文不会谈论跨进程 UI 具体实现,只会提及其实现中一个重要缓解,使用子窗口方式。...如果你希望实际跑一跑项目看看,可以使用下面的代码: walterlv.demo/Walterlv.Demo.HwndWrapping/Walterlv.Demo.HwndWrapping at a88f81477756af2913349970ba2f0bbab01aaf88...· walterlv/walterlv.demo 我特地提取了一个提交下代码,如果你要尝试,不能使用 master 分支,因为 master 分支修复了闪烁问题。...后来使用 CreateWindowEx 创建了一个纯 Win32 窗口,这种闪烁现象容易被截图: 解决 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19...,同时有更好阅读体验。

    63040

    内网渗透测试基础

    2、域 域(Domain)是一个有安全边界计算机集合 安全边界:一个域用户无法访问另一个域 可以简单把域理解成升级版工作组,但有一个严格集中管理控制机制 用户访问域内资源...安全划分 安全域划分目的是将一组安全等级相同计算机划入同一个网段内, 在网络边界上通过防火墙来实现对其他安全网络访问控制策略, 使得其风险最小化 一般安全域划分为:DMZ和内网,通过硬件防火墙不同端口实现隔离...外网:安全级别最低 (1)DMZ DMZ通常需要定义如下访问控制策略,以实现其屏障功能: 内网可以访问外网:防火墙需要执行NAT 内网可以访问DMZ:内网用户可以使用或者管理DMZ中服务器...中,张三就是域管理员了,可以在全局使用,对域成员计算机是有特权 通用组(Universal Group) 成员来自域森林中任何域用户账号、全局组和其他通用组,可以在该域森林任何中指派权限...PowerShell开发 使Windows脚本执行变得容易 cmd运行通常会被阻止,但是PowerShell运行通常不会被阻止 可用于管理活动目录 3、Windows Powershell命令

    1.3K10

    Unity3d底层数据传递分析

    另一种不必封送情况是指针传递,例如通过引用传递结构体到非托管代码,只会拷贝结构指针。当然,也可以通过MarshalAs来自定义封送策略。 需要谨记是,这两部分内存则完全独立。...所以要想返回指向结构指针,就必须使用IntPtr,或在外部定义unsafe。如果使用IntPtr做返回值,可以用Marshal.PtrToStructure系列函数,将指针转换为托管结构体。...成员变量 对于类与结构体成员变量,乖巧做法是:不要将包含引用类型(比如说类)结构体传给非托管代码。因为非托管代码不能安全操作非托管引用,托管代码也不一定会深封送数据。...例如: [13.png] 或者: [14.png] 需要注意是,如此使用必须保证托管代码中有内存分配,例如: [15.png] 五、GC安全 ------ 由于Marshalling是通过数据拷贝实现...很有可能非托管代码C.OperatOnHandle依然在使用_handle,因为已经跨界了,托管代码是不可能知道这件事。解决办法是在这种情况下使用HandleRef来替代IntPtr

    3.6K21

    System.InvalidOperationException:“寄宿 HWND 必须是子窗口。”

    WPF 中可以使用 HwndSource 来包装一个 WPF 控件到 Win32 窗口,使用自定义继承自 HwndHost 类可以把 Win32 窗口包装成 WPF 控件。...Dispose(); } } } 寄宿 HWND 必须是子窗口 当运行此代码时候,会提示错误: System.InvalidOperationException:“寄宿 HWND...使用 SetWindowLong 来设置 Win32 窗口样式是可以。不过我们因为使用了 HwndSource,所以可以通过 HwndSourceParameters 来方便地设置窗口样式。...,以避免陈旧错误知识误导,同时有更好阅读体验。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

    31220
    领券