随笔分类 -  C#

1 2 3 4 5 6 下一页
C#学习笔记
.NET代码混淆——开源.net 混淆器ConfuserEx介绍
摘要:今天给大家介绍一个开源.net混淆器——ConfuserEx http://yck1509.github.io/ConfuserEx/ 由于项目中要用到.net 混淆器,网上搜寻了很多款,比如Dotfuscator、xeoncode、foxit等等。 但大部分收费,当然也有破解版的,公司要求不能用盗版软件。 阅读全文
posted @ 2022-02-17 10:21 上校 阅读(1881) 评论(0) 推荐(0) 编辑
在.NET下如何预防XXE注入攻击
摘要:接下来关于.NET中XXE注入的内容来自Dean Fleming单元测试的Web站点:https://github.com/deanf1/dotnet-security-unit-tests。该站点覆盖了目前.NET下支持的所有XML解析器,且测试用例均展示了哪些情况下它们对于XXE注入而言是安全的,哪些情况下又是不安全的。这些内容更早之前是基于James Jardine这篇关于.NET XXE的杰出文章:https://www.jardinesoftware.net/2016/05/26/xxe-and-net/。与微软这篇在.NET下如何预防XXE以及XML拒绝服务的老文章http://msdn.microsoft.com/en-us/magazine/ee335713.aspx 相比它提供了更新更全的内容,但与Dean Fleming的Web站点覆盖的地方相比还是有些不准确的地方。 阅读全文
posted @ 2018-12-29 10:53 上校 阅读(877) 评论(0) 推荐(0) 编辑
C#常使用的正则表达式
摘要:/// /// 是否为手机号码 /// /// /// public static bool IsMobileNo(string value) { return Regex.IsMatch(value, @"^1\d{10}$"); } 阅读全文
posted @ 2013-07-18 17:33 上校 阅读(330) 评论(0) 推荐(0) 编辑
通过注册表开机启动程序
摘要://此方法把启动项加载到注册表中 //获得应用程序路径 string strAssName = Application.StartupPath + @"\" + Application.ProductName + @".exe"; //获得应用程序名 string ShortFileName = Application.ProductName; 阅读全文
posted @ 2013-06-29 23:34 上校 阅读(313) 评论(0) 推荐(0) 编辑
关于串行接口
摘要:串行接口(Serial port)又称“串口”,主要用于串行式逐位数据传输。常见的有一般电脑应用的RS-232(使用 25 针或 9 针连接器)和工业电脑应用的半双工RS-485与全双工RS-422。 串行接口按电气标准及协议来分,包括RS-232-C、RS-422、RS485、USB等。 RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。USB是近几年发展起来的新型接口标准,主要应用于高速数据传输领域。 阅读全文
posted @ 2013-05-31 22:25 上校 阅读(2842) 评论(0) 推荐(0) 编辑
跨线程访问控件类
摘要:/******************************************************************************* * InvokeHelper.cs * A thread-safe control invoker helper class. * ----------------------------------------------------------------------------- * Project:Conmajia.Controls 阅读全文
posted @ 2013-05-28 22:13 上校 阅读(394) 评论(0) 推荐(0) 编辑
[MethodImpl(MethodImplOptions.Synchronized)]、lock(this)与lock(typeof(...))
摘要:对于稍微有点经验的.NET开发人员来说,倘若被问及如何保持线程同步,我想很多人都能说好好几种。在众多的线程同步的可选方式中,加锁无疑是最为常用的。如果仅仅是基于方法级别的线程同步,使用System.Runtime.CompilerServices.MethodImplAttribute无疑是最为简洁的一种方式。MethodImplAttribute可以用于instance method,也可以用于static method。当在某个方法上标注了MethodImplAttribute,并指定MethodImplOptions.Synchronized参数,可以确保在不同线程中运行的该方式以同步的方式运行。我们几天来讨论MethodImplAttribute(MethodImplOptions.Synchronized)和lock的关系。 阅读全文
posted @ 2013-05-27 23:49 上校 阅读(4207) 评论(3) 推荐(0) 编辑
WinForm中使用自定义事件
摘要:using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication8 阅读全文
posted @ 2013-05-26 20:12 上校 阅读(6822) 评论(0) 推荐(0) 编辑
常用C#调用 Win32 API 收录
摘要:SendMessage(lvPrintData.Handle, WM_VSCROLL, 1, 0); [DllImport("user32.dll", EntryPoint = "SendMessage")] static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam); const int WM_VSCROLL = 0x0115; 阅读全文
posted @ 2013-05-25 13:37 上校 阅读(315) 评论(0) 推荐(0) 编辑
生成单色BMP图片
摘要:在项目的属性里要勾选 容许不安全代码 public Bitmap ConvertTo24bppTo1bpp(Bitmap SrcImg) { unsafe { 阅读全文
posted @ 2013-05-15 19:54 上校 阅读(4109) 评论(0) 推荐(0) 编辑
wince更改桌面
摘要:首先在sdmmc卡根目录中建立一个 shell 文件夹,然后运行附件中的注册表编辑器打开[HKEY_LOCAL_MACHINE\System\Explorer\Shell Floder ,看右面的DESKTOP项,原来是\windows\桌面 ,把它更改为\sdmmc\shell然后把原来桌面的快捷方式拷贝到shell这个文件夹,这样再重启机器就不会丢失桌面的快捷方式啦。当然你新加的快捷方式也就不会丢失了,注意!!!注册表编辑器是在 wince底下运行的。 阅读全文
posted @ 2013-02-22 17:09 上校 阅读(435) 评论(0) 推荐(0) 编辑
异常处理之ThreadException、unhandledException及多线程异常处理
摘要:异常处理之ThreadException、unhandledException及多线程异常处理 一:ThreadException和unhandledException的区别 处理未捕获的异常是每个应用程序起码有的功能,C#在AppDomain提供了UnhandledException 事件来接收未捕获到的异常的通知。常见的应用如下: 阅读全文
posted @ 2013-01-20 15:28 上校 阅读(490) 评论(0) 推荐(0) 编辑
C#操作注册表
摘要:Windows 操作系统的注册表包含了很多有关计算机运行的配置方式,打开注册表我们可以看到注册表是按类似于目录的树结构组织的,其中第二级目录包含了五个预定义主键分别是:HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG。   下面我们来分别解释这5个类的作用   HKEY_CLASSES_ROOT该主键包含了文件的扩展名和应用程序的关联信息以及Window Shell和OLE用于储存注册表的信息。该主键下的子键决定了在WINDOWS中如何显示该类文件以及他们的图标,该主键是从HKEY_LCCAL_MACHINE\SOFTWARE\Classes映射过来的。   HKEY_CURRENT_USER该主键包含了如用户窗口信息,桌面设置等当前用户的信息。 阅读全文
posted @ 2013-01-16 22:31 上校 阅读(705) 评论(0) 推荐(0) 编辑
浏览文件按钮
摘要:private string GetPath() { OpenFileDialog fileDialog = new OpenFileDialog(); fileDialog.Title = "选择文件"; fileDialog.Filter = "文本文件(*.txt)|*.txt|数据文件(*.dat)|*.dat|所有文件(*.*)|*.*"; fileDialog.FilterIndex = 1; fileDialog.RestoreDirectory = true; if (fileDialog.ShowDialog() == DialogResult.OK) { return fileDialog.FileName; } return string.Empty; } 阅读全文
posted @ 2012-07-02 15:02 上校 阅读(278) 评论(0) 推荐(0) 编辑
防止程序过快生成相同随机数
摘要:static int GetRandomSeed() { byte[] bytes = new byte[4]; System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider(); rng.GetBytes(bytes); return BitConverter.ToInt32(bytes, 0); } 阅读全文
posted @ 2012-03-30 10:37 上校 阅读(322) 评论(0) 推荐(0) 编辑
VS如何自定义快捷键
摘要:(1)查看和修改某一命令的快捷键在 工具->选项->环境->键盘 里面,注意快捷键都有作用范围,另外查询某个快捷键时,可以直接在 显示命令包含 中输入你的命令名称,会帮你自动搜索出来, 然后就可以在下面修改了, (2)要把某个命令作为按钮单独拎出来的话, 工具->自定义->命令 里面找到后把它拉出来就行了~~~~ 阅读全文
posted @ 2012-03-04 00:15 上校 阅读(2941) 评论(0) 推荐(0) 编辑
Visual Studio快速开发以及Visual Studio 2010新功能介绍
摘要:一直以来都在摸索着vb6.0的一些用法和语法,趁这次培训的机会正好整理Visual Studio的一些快速开发的技巧,还有一些vs2010的新功能收集和体会,把培训的一些文档性质的记录下来,希望对各位有用   1.快捷命令: "devenv" 启动相应版本的 Visual Studio "Inetmgr" IIS 管理器,不用到管理里去找了,很快就可以显示 IIS管理了 复制代码   2.集成开发环境(IDE) 阅读全文
posted @ 2011-12-21 23:10 上校 阅读(645) 评论(0) 推荐(0) 编辑
C#托管代码与C++非托管代码互相调用一(C#调用C++代码&.net 代码安全)
摘要:在最近的项目中,牵涉到项目源代码保密问题,由于代码是C#写的,容易被反编译,因此决定抽取核心算法部分使用C++编写,C++到目前为止好像还不能被很好的反编译,当然如果你是反汇编高手的话,也许还是有可能反编译。这样一来,就涉及C#托管代码与C++非托管代码互相调用,于是调查了一些资料,顺便与大家分享一下:源代码下载 一. C# 中静态调用C++动态链接 1. 建立VC工程CppDemo,建立的时候选择Win32 Console(dll),选择Dll。 2. 在DllDemo.cpp文件中添加这些代码。 阅读全文
posted @ 2011-12-13 11:12 上校 阅读(630) 评论(0) 推荐(0) 编辑
多线程中控制控件
摘要:private void button1_Click(object sender, EventArgs e) { System.Threading.Thread th = new System.Threading.Thread(fun); th.Start(); button1.Enabled = false; } private delegate void MessageDelegate(string message); private void AddTalkMessage(string message) { if (button1.InvokeRequired) { MessageDelegate d = new MessageDelegate(AddTalkMessage); butto 阅读全文
posted @ 2011-12-05 21:40 上校 阅读(263) 评论(0) 推荐(0) 编辑
C#多线程学习(六) 互斥对象
摘要:如何控制好多个线程相互之间的联系,不产生冲突和重复,这需要用到互斥对象,即:System.Threading 命名空间中的 Mutex 类。 我们可以把Mutex看作一个出租车,乘客看作线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只有等他下车以后才可以上车。而线程与Mutex对象的关系也正是如此,线程使用Mutex.WaitOne()方法等待Mutex对象被释放,如果它等待的Mutex对象被释放了,它就自动拥有这个对象,直到它调用Mutex.ReleaseMutex()方法释放这个对象,而在此期间,其他想要获取这个Mutex对象的线程都只有等待。 下面这个例子使用了Mutex对象来同步四个线程,主线程等待四个线程的结束,而这四个线程的运行又是与两个Mutex对象相关联的。 其中还用到AutoResetEvent类的对象,可以把它理解为一个信号灯。这里用它的有信号状态来表示一个线程的结束。 阅读全文
posted @ 2011-11-12 23:13 上校 阅读(212) 评论(0) 推荐(0) 编辑

1 2 3 4 5 6 下一页

点击右上角即可分享
微信分享提示