cari
Rumahpembangunan bahagian belakangTutorial C#.Net使用VS2010 C#开发ActiveX控件(下),完整代码打包下载

其实如果我们不进行设置,只是修改了代码,运行程序以后,其出错界面如下图1所示:

使用VS2010 C#开发ActiveX控件(下),完整代码打包下载

抛出异常如下:

************** Exception Text **************

System.MethodAccessException: Attempt by security transparent method 'Rare.Card.Libary.Controls.

ReadCardControl.btnRead_Click(System.Object, System.EventArgs)' to call native code through method 'Rare.Card.Libary.MifareOneHelper.rf_read(Int32, Int32, Byte[])' failed. Methods must be security critical or

security safe-critical to call native code.

 

通过查阅MSDN,对异常的解释如下:

在 Microsoft .NET Framework 4 中,公共语言运行时 (CLR) 安全模型发生了不少变化。其中一项变化,即采用 Level2 透明性

(与 Silverlight 的安全模型非常相似)很可能影响 AllowPartiallyTrustedCallers (APTCA) 库的作者。透明性属性有三种:SecurityTransparent、SecuritySafeCritical 和 SecurityCritical。

 

SecurityTransparent:标记为 SecurityTransparent 的代码从安全性角度而言是可靠的。它不能完成任何危险操作,例如声明权限、

执行无法验证的代码或调用本机代码。它也不能直接调用 SecurityCritical 代码。

如上文所述,出于安全的考虑,所有部分受信任代码都强制为 SecurityTransparent。这也是 APTCA 库的默认透明性。

SecurityCritical:与 SecurityTransparent 不同,SecurityCritical 代码能够执行任何所需操作。它能够执行声明、

调用本机代码和其他操作。它能够调用其他方法,且不受透明性标记的限制。

只有完全受信任代码才能为 SecurityCritical。事实上,(非 APTCA)完全受信任代码默认情况下属于 SecurityCritical,

从而保护其免受透明的部分受信任调用方的调用。

SecuritySafeCritical:SecuritySafeCritical 代码起着桥梁的作用,它允许透明代码调用关键方法。SecuritySafeCritical

代码与 SecurityCritical 代码的权限相同,但它可由 SecurityTransparent 代码调用。因此,SecuritySafeCritical 代码必须以安全方式公开基础 SecurityCritical 方法(以避免一些部分受信任的恶意代码尝试通过 SecuritySafeCritical 层攻击这些方法),这一点极为重要。

与 SecurityCritical 代码一样,SecuritySafeCritical 代码必须完全受信任。

根据MSDN的解释,问题出在了封装原始Dll的C#类库CardReader.Library上,我们可以在代码级别设置透明性属性可以解决问题。

具体解决办法如下:
1. 设置ActiveX控件读卡代码的透明属性为:SecuritySafeCritical,设置以后的代码清单如下: 

[SecuritySafeCritical] 
/// <summary> 
/// 读卡 
/// </summary> 
/// <param name="sender"></param> 
/// <param name="e"></param> 
private void btnRead_Click(object sender, EventArgs e) 
{ 
int i = 0; 
byte[] data = new byte[16]; 
byte[] buff = new byte[32]; 

for (i = 0; i < 16; i++) 
data[i] = 0; 
for (i = 0; i < 32; i++) 
buff[i] = 0; 

st = MifareOneHelper.rf_read(icdev, sec * 4 + 1, data); 
if (st == 0) 
{ 
SerialInterfaceHelper.hex_a(data, buff, 16); 
txtCardID.Text = System.Text.Encoding.ASCII.GetString(buff); 
lblMsg.Text = "读取卡号成功!"; 
} 
else 
lblMsg.Text = "读取卡号失败!"; 

//test method 
//if (string.IsNullOrEmpty(txtCardID.Text)) 
//{ 
// lblMsg.Text = "读取数据失败!"; 
//} 
//else 
//{ 
// lblMsg.Text = string.Format("读取数据:{0}!", txtCardID.Text); 
//} 
}

注意要添加引用:using System.Security; 
在这里注掉了测试代码,使用了串口通信和读卡代码。 
2. 设置封装原始读卡器Dll的透明属性。 
设置M1读卡器帮助类MifareOneHelper的透明属性为:[SecurityCritical],同时设置调用的方法MifareOneHelper.rf_read的 
透明属性为[SecurityCritical]。 
设置串口通信帮助类SerialInterfaceHelper的透明属性为:[SecurityCritical],同时设置调用的方法SerialInterfaceHelper.hex_a的 
透明属性为[SecurityCritical]。 

完整代码已提供,还有2个地方需要注意的是,客户端如果安装ActiveX失败,则把运行ActiveX的地址加入到信任站点里, 
信任站点的安全级别降低到最低或者设置信任站点关于ActiveX的选项。 

更多使用VS2010 C#开发ActiveX控件(下),完整代码打包下载相关文章请关注PHP中文网!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
C# dan runtime .net: bagaimana mereka bekerjasamaC# dan runtime .net: bagaimana mereka bekerjasamaApr 19, 2025 am 12:04 AM

C# dan .NET Runtime bekerjasama rapat untuk memperkasakan pemaju untuk keupayaan pembangunan yang cekap, kuat dan silang platform. 1) C# adalah bahasa pengaturcaraan yang berorientasikan objek dan berorientasikan objek yang direka untuk mengintegrasikan dengan lancar dengan rangka .NET. 2) Runtime NET menguruskan pelaksanaan kod C#, menyediakan pengumpulan sampah, keselamatan jenis dan perkhidmatan lain, dan memastikan operasi yang cekap dan silang platform.

C# .NET Development: Panduan Pemula untuk BermulaC# .NET Development: Panduan Pemula untuk BermulaApr 18, 2025 am 12:17 AM

Untuk memulakan C# .NET Development, anda perlu: 1. Memahami pengetahuan asas C# dan konsep teras Rangka Kerja NET; 2. Menguasai konsep asas pembolehubah, jenis data, struktur kawalan, fungsi dan kelas; 3. Belajar ciri -ciri canggih C#, seperti LINQ dan pengaturcaraan asynchronous; 4. Berkenaan dengan teknik debugging dan kaedah pengoptimuman prestasi untuk kesilapan biasa. Dengan langkah -langkah ini, anda secara beransur -ansur boleh menembusi dunia C#.net dan menulis aplikasi yang cekap.

C# dan .net: memahami hubungan antara kedua -duaC# dan .net: memahami hubungan antara kedua -duaApr 17, 2025 am 12:07 AM

Hubungan antara C# dan .NET tidak dapat dipisahkan, tetapi mereka bukan perkara yang sama. C# adalah bahasa pengaturcaraan, sementara .NET adalah platform pembangunan. C# digunakan untuk menulis kod, menyusun bahasa pertengahan .NET (IL), dan dilaksanakan oleh Runtime .NET (CLR).

Relevan berterusan C# .NET: Lihat penggunaan semasaRelevan berterusan C# .NET: Lihat penggunaan semasaApr 16, 2025 am 12:07 AM

C#.NET masih penting kerana ia menyediakan alat dan perpustakaan yang kuat yang menyokong pelbagai pembangunan aplikasi. 1) C# menggabungkan rangka kerja NET untuk menjadikan pembangunan cekap dan mudah. 2) Mekanisme keselamatan dan sampah jenis C#meningkatkan kelebihannya. 3) .NET menyediakan persekitaran berjalan lintas platform dan API yang kaya, meningkatkan fleksibiliti pembangunan.

Dari web ke desktop: fleksibiliti C# .netDari web ke desktop: fleksibiliti C# .netApr 15, 2025 am 12:07 AM

C#.netisversatileforbothwebanddesktopdevelopment.1) Forweb, useasp.netfordynamicapplications.2) Fordesktop, ExployWindowsFormsor Wpfforrichinterfaces.3) UseXamarinforcross-platformdevelopment, enablingcodesharingacrosswindows, macOS, linux, andmobiledevices.

C# .NET dan Masa Depan: Mengadaptasi Teknologi BaruC# .NET dan Masa Depan: Mengadaptasi Teknologi BaruApr 14, 2025 am 12:06 AM

C# dan .NET menyesuaikan diri dengan keperluan teknologi baru melalui kemas kini dan pengoptimuman berterusan. 1) C# 9.0 dan .NET5 Memperkenalkan jenis rekod dan pengoptimuman prestasi. 2) .Netcore meningkatkan sokongan asli dan kontena awan. 3) ASP.Netcore mengintegrasikan dengan teknologi web moden. 4) ML.NET menyokong pembelajaran mesin dan kecerdasan buatan. 5) Pengaturcaraan Asynchronous dan Amalan Terbaik meningkatkan prestasi.

Adakah C# .net sesuai untuk anda? Menilai kebolehgunaannyaAdakah C# .net sesuai untuk anda? Menilai kebolehgunaannyaApr 13, 2025 am 12:03 AM

C#.netissusuitibleforenterprise-levelapplicationswithinthememicrosoftecosystemduetoitsstrongtyping, richlibraries, androbustperformance.

C# kod dalam .NET: Meneroka proses pengaturcaraanC# kod dalam .NET: Meneroka proses pengaturcaraanApr 12, 2025 am 12:02 AM

Proses pengaturcaraan C# dalam .NET termasuk langkah -langkah berikut: 1) Menulis C# Code, 2) Menyusun bahasa pertengahan (IL), dan 3) yang dilaksanakan oleh Runtime .NET (CLR). Kelebihan C# dalam .NET adalah sintaks moden, sistem jenis yang kuat dan integrasi yang ketat dengan Rangka Kerja .NET, sesuai untuk pelbagai senario pembangunan dari aplikasi desktop ke perkhidmatan web.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).