• 大小: 65KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: C#
  • 标签: C#  RDP  远程连接  

资源简介

相关描述在http://blog.csdn.net/btlong520/article/details/50489720

资源截图

代码片段和文件信息

using System;
using System.Runtime.InteropServices;
using System.Text;
using System.Security;

namespace RDPdemo
{
    [Serializable()]
    public sealed class DataProtection
    {
        [Flags()]
        public enum CryptProtectPromptFlags
        {
            CRYPTPROTECT_PROMPT_ON_UNPROTECT = 0x01
            CRYPTPROTECT_PROMPT_ON_PROTECT = 0x02
            CRYPTPROTECT_PROMPT_RESERVED = 0x04
            CRYPTPROTECT_PROMPT_STRONG = 0x08
            CRYPTPROTECT_PROMPT_REQUIRE_STRONG = 0x10
        }

        [Flags()]
        public enum CryptProtectDataFlags
        {
            CRYPTPROTECT_UI_FORBIDDEN = 0x01
            CRYPTPROTECT_LOCAL_MACHINE = 0x04
            CRYPTPROTECT_CRED_SYNC = 0x08
            CRYPTPROTECT_AUDIT = 0x10
            CRYPTPROTECT_NO_RECOVERY = 0x20
            CRYPTPROTECT_VERIFY_PROTECTION = 0x40
            CRYPTPROTECT_CRED_REGENERATE = 0x80
        }

        #region 加密数据
        public static string ProtectData(string data string name)
        {
            return ProtectData(data name
                CryptProtectDataFlags.CRYPTPROTECT_UI_FORBIDDEN | CryptProtectDataFlags.CRYPTPROTECT_LOCAL_MACHINE);
        }

        public static byte[] ProtectData(byte[] data string name)
        {
            return ProtectData(data name
                CryptProtectDataFlags.CRYPTPROTECT_UI_FORBIDDEN | CryptProtectDataFlags.CRYPTPROTECT_LOCAL_MACHINE);
        }

        public static string ProtectData(string data string name CryptProtectDataFlags flags)
        {
            byte[] dataIn = Encoding.Unicode.GetBytes(data);
            byte[] dataOut = ProtectData(dataIn name flags);

            if (dataOut != null)
                return (Convert.Tobase64String(dataOut));
            else
                return null;
        }

        /// 
        /// 加密数据
        /// 

        /// 要加密的明文数据
        /// 有意义的描述,此描述会加到加密后的数据中
        /// flags的位标志
        /// 
        private static byte[] ProtectData(byte[] data string name CryptProtectDataFlags dwFlags)
        {
            byte[] cipherText = null;

            // copy data into unmanaged memory
            //DATA_BLOB结构,用于CryptProtectData参数
            DPAPI.DATA_BLOB din = new DPAPI.DATA_BLOB();
            din.cbData = data.Length;

            //Marshal类的作用:提供了一个方法集,这些方法用于分配非托管内存、复制非托管内存块、将托管类型转换为非托管类型,
            //此外还提供了在与非托管代码交互时使用的其他杂项方法。 
            //为din.pbData分配内存
            din.pbData = Marshal.AllocHGlobal(din.cbData);

            //InPtr结构:用于表示指针或句柄的平台特定类型
            //分配内存错误,抛出内存不足异常
            //IntPtr.Zero:一个只读字段,代表已初始化为零的指针或句柄
            if (din.pbData.Equals(IntPtr.Zero))
                throw new OutOfMemoryException(“Unable to allocate memory for buffer.“);

            //将data数组中的数据复制到pbData内存指针中
          

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-01-09 20:59  RDPdemo\
     目录           0  2016-01-09 21:39  RDPdemo\RDPdemo\
     文件        7586  2016-01-09 21:00  RDPdemo\RDPdemo\DataProtection.cs
     文件        6935  2016-01-09 21:33  RDPdemo\RDPdemo\Form1.Designer.cs
     文件        2273  2016-01-09 21:39  RDPdemo\RDPdemo\Form1.cs
     文件        5817  2016-01-09 21:33  RDPdemo\RDPdemo\Form1.resx
     文件         488  2016-01-09 20:59  RDPdemo\RDPdemo\Program.cs
     目录           0  2016-01-09 21:23  RDPdemo\RDPdemo\Properties\
     文件        1356  2016-01-09 20:59  RDPdemo\RDPdemo\Properties\AssemblyInfo.cs
     文件        3925  2016-01-09 21:23  RDPdemo\RDPdemo\Properties\Resources.Designer.cs
     文件        6202  2016-01-09 21:23  RDPdemo\RDPdemo\Properties\Resources.resx
     文件        1094  2016-01-09 20:59  RDPdemo\RDPdemo\Properties\Settings.Designer.cs
     文件         249  2016-01-09 20:59  RDPdemo\RDPdemo\Properties\Settings.settings
     文件        3845  2016-01-09 21:23  RDPdemo\RDPdemo\RDPdemo.csproj
     目录           0  2016-01-09 21:23  RDPdemo\RDPdemo\Resources\
     文件        1181  2016-01-09 21:23  RDPdemo\RDPdemo\Resources\TemplateRDP.txt
     目录           0  2016-01-09 21:00  RDPdemo\RDPdemo\bin\
     目录           0  2016-01-09 21:37  RDPdemo\RDPdemo\bin\Debug\
     文件       15872  2016-01-09 21:39  RDPdemo\RDPdemo\bin\Debug\RDPdemo.exe
     文件       30208  2016-01-09 21:39  RDPdemo\RDPdemo\bin\Debug\RDPdemo.pdb
     文件       22704  2016-01-09 21:40  RDPdemo\RDPdemo\bin\Debug\RDPdemo.vshost.exe
     文件        1625  2016-01-09 21:39  RDPdemo\RDPdemo\bin\Debug\ceshi.rdp
     目录           0  2016-01-09 21:40  RDPdemo\RDPdemo\bin\Release\
     目录           0  2016-01-09 20:59  RDPdemo\RDPdemo\obj\
     目录           0  2016-01-09 21:39  RDPdemo\RDPdemo\obj\Debug\
     文件         791  2016-01-09 20:59  RDPdemo\RDPdemo\obj\Debug\DesignTimeResolveAssemblyReferences.cache
     文件        6873  2016-01-09 21:23  RDPdemo\RDPdemo\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
     文件         180  2016-01-09 21:33  RDPdemo\RDPdemo\obj\Debug\RDPdemo.Form1.resources
     文件        1399  2016-01-09 21:24  RDPdemo\RDPdemo\obj\Debug\RDPdemo.Properties.Resources.resources
     文件         586  2016-01-09 21:40  RDPdemo\RDPdemo\obj\Debug\RDPdemo.csproj.FileListAbsolute.txt
     文件         892  2016-01-09 21:33  RDPdemo\RDPdemo\obj\Debug\RDPdemo.csproj.GenerateResource.Cache
............此处省略7个文件信息

评论

共有 条评论