【问题标题】:Color.FromArgb(...); security message颜色.FromArgb(...);安全信息
【发布时间】:2012-10-11 04:29:34
【问题描述】:

我正在从 argb 定义一个颜色,例如

Color.FromArgb(255,255,0,0);

在 Visual Studio 2012 中,winRT 应用程序说这是用 [security critical] 标记的。有什么原因吗?我尝试搜索,没有结果。也不知道为什么这与安全有关。

更新:

现在我注意到,不仅 FromArgb(...);方法给出了这个 [SECURITY CRITICAL] 警告。这些中的任何一个:

c.A = 255;
c.R = 255;
c.G = 0;
c.B = 0;

也有。

【问题讨论】:

  • System.Drawing 与 WPF 无关,那么问题的背景是什么?你的意图是什么?
  • 意图:我对这个安全属性很好奇。或者它与安全性的关系。

标签: c# visual-studio colors windows-runtime


【解决方案1】:

System.Drawing 是非托管 GDI+ 代码的包装器。据我了解,WinRT 不支持 GDI+:

http://social.msdn.microsoft.com/Forums/en-NZ/winappswithnativecode/thread/0ba00fbd-183f-4df6-afa2-04d0ac14706a

需要使用 Direct2D 完成本机渲染代码。

【讨论】:

  • @stakx 不知道中间有多少步骤,但最后确实是一大堆 IntPtr 和对 System.Drawing.SafeNativeMethods 的调用,其中 P/Invokes [DllImport("gdi32.dll", CharSet=CharSet.Auto, SetLastError=true, ExactSpelling=true)]。它在 ASP.net 应用程序中已经正式不受支持(尽管在大多数情况下它可以工作),而且对于 Windows 应用商店应用程序来说,他们似乎将它彻底杀死了。 System.Drawing.Color 实际上只是一个普通的、无害的结构,但我认为他们只是将整个命名空间标记为verboten。
【解决方案2】:

您的消息不是警告,是有关方法签名属性的信息。

SECURITY CRITICAL 是一个代码属性,真正的类名是 SecurityCriticalAttribute。 必须将此属性赋予需要完全信任才能执行代码的方法(通常是本机代码调用、不安全代码、图形资源(通常需要非托管代码等))。

如果方法未获得完全信任,则安全关键方法会引发异常。

更多信息:http://msdn.microsoft.com/en-us/library/system.security.securitycriticalattribute.aspx

【讨论】:

    【解决方案3】:

    您应该改用来自System.Windows.MediaColor

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-17
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      相关资源
      最近更新 更多