一切福田,不離方寸,從心而覓,感無不通。

Category Archives: C#

System.Security.Cryptography 命名空间

System.Security.Cryptography 命名空间提供加密服务,包括安全的数据编码和解码,以及许多其他操作,例如散列法、随机数字生成和消息身份验证。 有关更多信息,请参见加密服务。 类 类 说明 Aes 表示高级加密标准 (AES) 的所有实现都必须从中继承的抽象基类。 AesCryptoServiceProvider 使用高级加密标准 (AES) 算法的加密应用程序编程接口 (CAPI) 实现来执行对称加密和解密。 AesManaged 提供高级加密标准 (AES) 对称算法的托管实现。 AsnEncodedData 表示 Abstract Syntax Notation One (ASN.1) 编码数据。 AsnEncodedDataCollection 表示 AsnEncodedData 对象的集合。 此类不能被继承。 AsnEncodedDataEnumerator 提供在 AsnEncodedDataCollection 对象中导航的能力。 此类不能被继承。 AsymmetricAlgorithm 表示所有非对称算法的实现都必须从中继承的抽象基类。 AsymmetricKeyExchangeDeformatter 表示所有非对称密钥交换反格式化程序均从中派生的基类。 AsymmetricKeyExchangeFormatter 表示所有非对称密钥交换格式化程序均从中派生的基类。 AsymmetricSignatureDeformatter 表示所有不对称签名反格式化程序实现均从中派生的抽象基类。 AsymmetricSignatureFormatter 表示所有不对称签名格式化程序实现均从中派生的基类。 CngAlgorithm 封装加密算法的名称。 CngAlgorithmGroup 封装加密算法组的名称。 CngKey 定义与下一代加密技术 (CNG) 对象一起使用的密钥的核心功能。 CngKeyBlobFormat 指定与 Microsoft 下一代加密技术 (CNG) 对象一起使用的密钥 BLOB 格式。 CngKeyCreationParameters 包含密钥创建的高级属性。 CngPropertyCollection 提供下一代加密技术 (CNG) 属性的强类型集合。 CngProvider 封装与下一代加密技术 (CNG) 对象一起使用的密钥存储提供程序 (KSP) 的名称。 CngUIPolicy 为用户界面 (UI) 封装可选配置参数,当您访问受保护的密钥时,下一代加密技术 (CNG) 将显示这些配置参数。 CryptoAPITransform 执行数据的加密转换。 此类不能被继承。 CryptoConfig 访问加密配置信息。 CryptographicAttributeObject […]

龙生   18 Apr 2015
View Details

NuGet学习笔记(2)——使用图形化界面打包自己的类库

上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新。在安装好NuGet扩展后,我们已经能够通过NuGet轻松下载自己需要的类库,下面来说一说如何将自己的项目类库进行打包发布 使用图形界面打包自己的类库 NuGet可以使用NuGet.exe在命令行下进行类库打包,也可以使用图形化界面进行打包,估计很多朋友都和我一样对不熟悉的命令行有些感冒,所以在此仅讲述下使用图形化界面进行类库打包 1. 首先下载 包包管理器 NuGetPackageExplorer,顾名思义,包包管理器可以用来创建新的类库包,也可以浏览已经创建好的类库包 2. 下载完成后,双击 NuGetPackageExplorer.application 进行安装,安装完成后会在桌面上生成一个NuGet Package Explorer 的快捷方式 3. 双击NuGet Package Explorer出现启动界面,选择Create a new package(Ctrl+N)创建一个新包 4. 选择菜单 Edit > Edit Package Metadata (或者 CTRL + K) 编辑包包信息 这里可以编辑类库包的信息和添加类库、程序集的引用解释下几个比较重要的字段 Id:用于定位类库包的唯一标示,如在命令行下执行 Install-Package MyPackage 这里的MyPackage就是包包的Id值 Version:类库的版本号,这里建议和程序集的真实版本号保持一致,以免发生混淆 Dependencies:此类库依赖的程序集,根据实际情况添加依赖类库的Id和版本号,若无留空即可,这里需要注意下填写的依赖类库需要在NuGet服务器上能找到,否则无法完成自动引用添加 Framework assemblies:依赖的Framework 程序集,根据实际需要选择即可,一般无需设置 除以上四项以外其他属性根据实际情况修改即可,若自己用不修改也中,不过为了使用方便还是建议把类库描述(Description)填写下 5. 编辑好包包信息后接下来添加DLL到包包中 可以选择 右键-->Add Existinng File… 选择dll添加,也可以直接拖拽DLL到 Package contents 窗口,此例选择拖拽方式 直接拖拽dll到窗口后,会出现提示:是否将 Winista.HtmlParser.dll放到lib 文件夹下,一般我们选择是 6. DLL添加完成后,快捷键Ctrl + K 修改包包信息Id为Winista.HtmlParser,版本号为1.8.0 7. 信息修改和dll都添加完毕后,选择File --> Save(或Ctrl + S)将文件进行保存,默认文件名为Id + 版本号.nupkg 8. 完成保存后如需要发布到网上,选择File--> Publish…(或Ctrl + P) 默认的发布地址是官网,发布 Key需要到官网去注册一个账号,然后就可以得到,这里不在复述,若无需发布直接关闭即可 ps:这里没有讲述如何打包项目文件,一般情况下我们自己将项目文件编译成DLL然后使用图形化界面打包即可满足需求,若实际工作需要高度集成完全自动化操作可自行去研究下官方文档http://docs.nuget.org/ 添加DLL默认会添加Lib文件夹,额外的菜单上还有很多.net文件夹,src等文件夹,这些文件夹只是对文件上的一个物理上的划分而已,只是为了帮助我们做好文件分类,没有其他的用途,dll文件可以随便放置,不过为了规范还是建议按照通常习惯来放置。   from:http://kb.cnblogs.com/page/143191/

龙生   15 Apr 2015
View Details

NuGet学习笔记(1)——初识NuGet及快速安装使用

关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录。 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages…,这是个神马玩意儿,当时是一头雾水,后台查了些资料才知到NuGet是 Visual Studio的一个扩展,引用dudu的话来说就是管理程序的包包,可以参考msdn上这篇文章使用 NuGet 管理项目库以及咱们博客园站长dudu写的程序员,用NuGet管理好你的类库,有些类似java中常用的maven 为什么要使用NuGet 简单的说NuGet可以是我们的工作更方便,当我们的项目里要引用到的一些库时候,比如JQuery、Newtonsoft.Json、log4net等,我们需要从网上下载这些库,然后依次拷贝到各个项目中,当有的类库有更新时又不得不再重复一遍很是繁琐 ,这时就可以考虑使用NuGet来帮我们管理和更新这些类库,而且更新类库时会自动添加类库的相关引用,方便至极。当然网上一些我们常用的类库更新频率不是很高而且即便出了新版本我们也没必要总是保持最新,故这点对我们的帮助比较有限,个人认为NuGet最大的好处在于可以搭建自己的类库服务器,想想一下吧,在一些较大些的公司里面有很多的项目,然后其中有一些是整个组,甚至整个公司通用的类库,当这些类库有更新后我们需要依次拷贝到我们的项目,甚至于有时候我们自己都搞不清楚各个项目里的版本是否一致,有时偶尔一两个项目忘了复制更新出现莫名其妙的错误,为此头疼不已,现在有了NuGet,世界从此而不同。 安装NuGet扩展 要使用NuGet首先需要安装它(在安装了MVC3的系统上已自动安装了NuGet) 1. 点击 工具-->扩展管理器(R)…-->右上角搜索框输入NuGet 2. 点击 NuGetPackage Manager 项上面的下载按钮开始下载NuGet 3. 下载完成后出现安装页面,点安装开始安装 4. 很快安装完成,然后点击关闭完成整个安装 5. 安装完后NuGet暂时不能用,需要重新启动下VS才行,重启后完毕后打开 扩展管理器(R)… 在已安装的扩展里可以看到NuGet Package Manager已经安装好了 使用NuGet下载需要的类库 1. 打开NuGet管理界面 2. 出现如下界面,可以在里面找自己想要的类库也可以在右上角搜索里面输入关键字查找自己想要的类库,找到合适自己的类库后点install进行安装 3. 这里我们选择安装Json.Net,点击安装好出现组件下载界面 4. 下载完成后会出现提示将类库安装到什么项目,这里我们选择安装到TestConsole项目 5. 安装完成后可以看到已经安装的Josn.Net显示一个已安装的小对勾 6. 打开项目引用可以看到我们刚选择的类库Newtonsoft.Json已经自动添加到项目引用中 使用命令行管理你的类库 1. NuGet提供了命令行安装方法,在菜单中选择Package Manager Console,打开命令行控制台 2. 出现NuGet控制台界面,默认类库源(Package source)为官方站点,也可以指向自己搭建的本地或内网站点,Default project表示默认将下载的类库添加到那个项目的引用中 3. NuGet控制台有几个常用命令 Get-Package 获取当前项目已经安装的类库 Install-Package 安装指定类库,命令格式如下:Install-Package 类库ID,如Install-Package Newtonsoft.Json 这里需要注意的是类库的ID是唯一的,指向命令后会自动搜索指定类库源里指定ID类库,若找到则自动下载并添加引用,找不到则会出现找不到类库的提示 Uninstall-Package 卸载指定类库,命令格式如下:Uninstall-Package 类库ID,如Uninstall-Package Newtonsoft.Json Update-Package 更新指定类库,命令格式如下:Update-Package 类库ID,如Update-Package Newtonsoft.Json ps:刚开始不熟悉时可以使用界面方式下载和更新类库,有一定经验后还是建议使用控制台添加、更新类库这样很方便,由于使用控制台需要知道类库的准确ID,可以到http://www.nuget.org/packages这里去查找,把自己常用的ID记录下方便以后使用。   from:http://kb.cnblogs.com/page/143190/

龙生   15 Apr 2015
View Details

C# 重启计算机的问题

  C# 程序重启计算机的方法很多,网上也有不少这方面的文章,不过很多网上提供的方法在某些情况下无法获取重启计算机的权限导致重启失败。本文对这些方法做一些简单的讨论。 作者:eaglet   网上介绍最多的两种方法分别是:

  这两种方法在通常情况下工作是没有问题的,但在某些特殊情况下,比如桌面被其它用户锁定时就无法重启计算机。本人在实际工作中遇到过当当前屏幕被远程控制软件锁定后,我做的后台守护进程试图重启计算机,结果用上述两种方法都无法成功。分析原因,应该是远程控制软件用另外的帐号锁定了屏幕(通常应该是windows service 或者 network service),这时守护进程用当前帐号重启计算机就因为没有权限而失败。 要解决这个问题,我们必须要给进程赋予足够的权限才行,于是我在调用 ExitWindowsEx 前运行了如下代码来赋予当前进程关闭计算机权限  

 

 

 

 

上面代码为当前进程赋予了关闭计算机的权限。这里需要注意的是上述代码要执行成功同样需要足够的权限,通常当前进程需要以拥有至少是系统管理员权限的账户运行。如果没有足够权限,需要用程序模拟系统管理员权限,模拟其它帐号权限的问题不在本文讨论范围内。 加上如上代码后,在其他用户锁定机器后,重启计算机成功。 下面给出完整代码

 

 

 

 

 

 

[…]

龙生   01 Apr 2015
View Details

VS2012创建MVC3项目提示错误: 此模板尝试加载组件程序集 “NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”

  VS2012已经全面切换到使用NuGet这个第三方开源工具来管理项目包和引用模块了,使用VS2012开发,都要装NuGet插件(官网:http://nuget.org),进官网点安装就进入了微软的下载页面,选择vs2012版本的NuGet.Tools.vsix文件,双击安装就可以了。 from:http://www.cxyclub.cn/n/20504/

龙生   27 Mar 2015
View Details

C# Winform对文件夹的权限判断及处理

WindowsIdentity类可以获取当前执行者的身份信息         /// <summary> /// 递归搜索文件方法 /// </summary> /// <param name="path">搜索的目录</param> /// <param name="name">搜索的文件名</param> public void GetDir(string path,string name) { DirectoryInfo di = new DirectoryInfo(path); DirectorySecurity s = new DirectorySecurity(path, AccessControlSections.Access); //判断目录是否 可以访问 if (!s.AreAccessRulesProtected) { foreach (DirectoryInfo d in di.GetDirectories()) { foreach (FileInfo fi in di.GetFiles()) { if (fi.Name.Contains(name)) { txtInfo.AppendText("文件名:"+fi.Name + " 路径:" + fi.FullName + " \n"); } } GetDir(d.FullName, name); } } } }   对执行的程序设定执行身份权限 如果程序不是以管理员身份运行,操作本地文件会提示:System.UnauthorizedAccessException异常   Vista 和 Windows 7 操作系统为了加强安全,增加了 UAC(用户账户控制) 的机制,如果 UAC 被打开,用户即使是以管理员权限登录,其应用程序默认情况下也无法对系统目录,系统注册表等可能影响系统运行的设置进行写操作。这个机制大大增强了系统的安全性,但对应用程序开发者来说,我们不能强迫用户去关闭UAC,但有时我们开发的应用程序又需要以 Administrator 的方式运行,即 Win7 中 […]

龙生   20 Mar 2015
View Details

C# WinForm判断Win7下程序是否以管理员身份运行

如果程序不是以管理员身份运行,操作本地文件会提示:System.UnauthorizedAccessException异常。   Vista 和 Windows 7 操作系统为了加强安全,增加了 UAC(用户账户控制) 的机制,如果 UAC 被打开,用户即使是以管理员权限登录,其应用程序默认情况下也无法对系统目录,系统注册表等可能影响系统运行的设置进行写操作。这个机制大大增强了系统的安全性,但对应用程序开发者来说,我们不能强迫用户去关闭UAC,但有时我们开发的应用程序又需要以 Administrator 的方式运行,即 Win7 中 以 as administrator 方式运行,那么我们怎么来实现这样的功能呢?   我们在 win7 下运行一些安装程序时,会发现首先弹出一个对话框,让用户确认是否同意允许这个程序改变你的计算机配置,但我们编写的应用程序默认是不会弹出这个提示的,也无法以管理员权限运行。本文介绍了 C# 程序如何设置来提示用户以管理员权限运行。 首先在项目中增加一个 Application Manifest File app.manifest 默认的配置如下:   <?xml version="1.0" encoding="utf-8"?> <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <!-- UAC Manifest Options If you want to change the Windows User Account Control level replace the requestedExecutionLevel node with one of the following.<requestedExecutionLevel level="asInvoker" uiAccess="false" /> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> If you want to […]

龙生   20 Mar 2015
View Details

.NET framework 4.0安装失败怎么办

每次我安装AUTO cad2012都会提示我必须要更新安装.NET framework 4.0,但总是提示安装失败。经过反复的学习与测试,我终于知道如何处理了。 找到安装包双击安装; 接受许可条款点击安装; 安装提示双进度条,安装成功将会提示你安装成功。 安装失败是,安装进度条会变成安装回滚条,将会提示安装未完成。 解决方法:开始——运行——输入cmd——回车——在打开的窗口中输入net stop WuAuServ 开始——运行——输入%windir% 找到有个叫SoftwareDistribution的文件夹,把它重命名为SDold 开始——运行——输入cmd——回车——在打开的窗口中输入net start WuAuServ 开始——运行——输入regedit——回车 找到注册表,HKEY_LOCAL_MACHINE\SOFWARE\Microsoft\Internet Explorer下的MAIN子键,右击main后,在上面菜单中找到“编辑”--“权限”,点击后就会出现“完全控制”等字样,勾上即可放心安装。 一般使用ghost系统都会出现这种问题,由于开发系统默认的权限设置导致这种情况无发安装。 FROM:http://jingyan.baidu.com/article/00a07f3892376982d028dc2a.html

龙生   19 Mar 2015
View Details

未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包

————————— Microsoft Visual Studio ————————— 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包。 此问题可能是由配置更改或安装另一个扩展导致的。可以通过查看文件“C:\Users\用户名\AppData\Roaming\Microsoft\VisualStudio\11.0\ActivityLog.xml”来获取详细信息。 是否继续显示此错误消息? ————————— 是(Y)   否(N) —————————   解决方案:"Microsoft Visual Studio 2012"->"Visual Studio Tools"->"VS2012 开发人员命令提示"->输入"devenv /resetuserdata "   FROM:http://www.cnblogs.com/autumn/p/3452369.html

龙生   04 Feb 2015
View Details
1 31 32 33 47