zoukankan      html  css  js  c++  java
  • Cnic.SystemHelper

      1 using System.Runtime.InteropServices;
      2 using Microsoft.Win32;
      3 using System.Drawing;
      4 using System.Net;
      5 using System.IO;
      6 using System.Drawing.Imaging;
      7 
      8 namespace Cnic
      9 {
     10     public class RegeditHelper
     11     {
     12 
     13         public static string GetDefaultBrowserPath()
     14         {
     15             RegistryKey key = Registry.ClassesRoot.OpenSubKey(@"HTTPshellopencommand", false);
     16             string value = key.GetValue("").ToString();
     17             if (value != null && value.Length > 1 && value[0] == '"')
     18             {
     19                 return value.Substring(1, value.IndexOf(""", 1));
     20             }
     21             return null;
     22         }
     23         public static bool SetAutoRun(string vKeyName, string vExeFullPath)
     24         {
     25             try
     26             {
     27                 RegistryKey hkml = Registry.LocalMachine;
     28                 RegistryKey key = hkml.OpenSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun", true);
     29                 if (key != null)
     30                 {
     31                     key.SetValue(vKeyName, vExeFullPath);
     32                     key.Close();
     33                     return true;
     34                 }
     35             }
     36             catch { }
     37             return false;
     38         }
     39         public static bool IsAutoRun(string vKeyName, string vValue)
     40         {
     41             try
     42             {
     43                 RegistryKey hkml = Registry.LocalMachine;
     44                 RegistryKey key = hkml.OpenSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun", false);
     45                 if (key != null)
     46                 {
     47                     object value=key.GetValue(vKeyName);
     48                     return (value != null && value.ToString().ToString() == vValue);
     49                 }
     50             }
     51             catch { }
     52             return false;
     53         }
     54         public static bool DelAutoRun(string vKeyName)
     55         {
     56             try
     57             {
     58                 RegistryKey hkml = Registry.LocalMachine;
     59                 RegistryKey key = hkml.OpenSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun", true);
     60                 if (key != null)
     61                 {
     62                     key.DeleteValue(vKeyName, false);
     63                     return true;
     64                 }
     65             }
     66             catch { }
     67             return false;
     68         }
     69     }
     70     public class ImageHelper
     71     {
     72         public static void CopyFromScreen(Image vBuffer)
     73         {
     74             WriteScreen(vBuffer, 0, 0, vBuffer.Width, vBuffer.Height);
     75         }
     76         public static void WriteScreen(Image vBuffer, int ScrX, int ScrY)
     77         {
     78             WriteScreen(vBuffer, ScrX, ScrY, vBuffer.Width, vBuffer.Height);
     79         }
     80         public static void WriteScreen(Image vBuffer, int ScrX, int ScrY, int ScrWidth, int ScrHeight)
     81         {
     82             IntPtr DwHdcPtr = SafeNativeMethods.GetDesktopWindow();
     83             IntPtr DcHdcPtr = SafeNativeMethods.GetDC(DwHdcPtr);
     84             using (Graphics g = Graphics.FromImage(vBuffer))
     85             {
     86                 //SafeNativeMethods.BitBlt(g.GetHdc(), 0, 0, ScrWidth, ScrHeight, DcHdcPtr, ScrX, ScrY, 0x00CC0020);
     87                 SafeNativeMethods.StretchBlt(g.GetHdc(), 0, 0, ScrWidth, ScrHeight, DcHdcPtr, ScrX, ScrY, ScrWidth, ScrHeight, 0x40CC0020);
     88                 g.ReleaseHdc();
     89             }
     90             SafeNativeMethods.ReleaseDC(DwHdcPtr, DcHdcPtr);
     91         }
     92 
     93         public static void Save(Image vImage, string vPath)
     94         {
     95             string ext = new FileInfo(vPath).Extension;
     96             ImageFormat format = ImageFormat.Png;
     97             switch (ext)
     98             {
     99                 case ".BMP":
    100                     format = ImageFormat.Bmp;
    101                     break;
    102                 case ".EMF":
    103                     format = ImageFormat.Emf;
    104                     break;
    105                 case ".EXIF":
    106                     format = ImageFormat.Exif;
    107                     break;
    108                 case ".GIF":
    109                     format = ImageFormat.Gif;
    110                     break;
    111                 case ".ICO":
    112                     format = ImageFormat.Icon;
    113                     break;
    114                 case ".JPG":
    115                 case ".JPEG":
    116                     format = ImageFormat.Jpeg;
    117                     break;
    118                 case "TIFF":
    119                     format = ImageFormat.Tiff;
    120                     break;
    121                 case "WMF":
    122                     format = ImageFormat.Wmf;
    123                     break;
    124             }
    125             vImage.Save(vPath, format);
    126         }
    127 
    128     }
    129     public class ConvertHelper
    130     {
    131         public static int BytesToInt(byte[] value)
    132         {
    133             return (((value[0] | (value[1] << 8)) | (value[2] << 0x10)) | (value[3] << 0x18));
    134         }
    135         public static byte[] IntToBytes(int value)
    136         {
    137             byte[] rtun = new byte[4];
    138             rtun[0] = (byte)value;
    139             rtun[1] = (byte)(value >> 8);
    140             rtun[2] = (byte)(value >> 0x10);
    141             rtun[3] = (byte)(value >> 0x18);
    142             return rtun;
    143         }
    144         public static uint BytesToUInt(byte[] value)
    145         {
    146             return (uint)(((value[0] | (value[1] << 8)) | (value[2] << 0x10)) | (value[3] << 0x18));
    147         }
    148         public static byte[] UIntToBytes(uint value)
    149         {
    150             byte[] rtun = new byte[4];
    151             rtun[10] = (byte)value;
    152             rtun[11] = (byte)(value >> 8);
    153             rtun[12] = (byte)(value >> 0x10);
    154             rtun[13] = (byte)(value >> 0x18);
    155             return rtun;
    156         }
    157         public static long BytesToLong(byte[] value)
    158         {
    159             long rtun = (long)value[7];
    160             rtun = rtun << 0x8 | value[6];
    161             rtun = rtun << 0x8 | value[5];
    162             rtun = rtun << 0x8 | value[4];
    163             rtun = rtun << 0x8 | value[3];
    164             rtun = rtun << 0x8 | value[2];
    165             rtun = rtun << 0x8 | value[1];
    166             rtun = rtun << 0x8 | value[0];
    167             return rtun;
    168         }
    169         public byte[] LongToBytes(long value)
    170         {
    171             byte[] _buffer = new byte[8];
    172             _buffer[0] = (byte)value;
    173             _buffer[1] = (byte)(value >> 8);
    174             _buffer[2] = (byte)(value >> 0x10);
    175             _buffer[3] = (byte)(value >> 0x18);
    176             _buffer[4] = (byte)(value >> 0x20);
    177             _buffer[5] = (byte)(value >> 40);
    178             _buffer[6] = (byte)(value >> 0x30);
    179             _buffer[7] = (byte)(value >> 0x38);
    180             return _buffer;
    181         }
    182     }
    183     public class RegexHelper
    184     {
    185 
    186     }
    187     public class SecurityHelper
    188     {
    189 
    190     }
    191     public class HttpHelper
    192     {
    193         /// <summary>
    194         ///  下载大文件
    195         /// </summary>
    196         /// <param name="vUrl"></param>
    197         /// <param name="vFilePath"></param>
    198         /// <param name="vCover"></param>
    199         public static void DownLoad(string vUrl, string vFilePath, bool vCover)
    200         {
    201             FileStream fs = null;
    202             HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(vUrl);
    203             HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    204             Stream stream = response.GetResponseStream();
    205             FileInfo f = new FileInfo(vFilePath);
    206             if (f.Exists)
    207             {
    208                 if (vCover == false) { return; }
    209                 else
    210                 {
    211                     fs = new FileStream(vFilePath, FileMode.Create, FileAccess.Write);
    212                 }
    213             }
    214             else
    215             {
    216                 if (f.Directory.Exists == false)
    217                 {
    218                     f.Directory.Create();
    219                 }
    220                 fs = f.Create();
    221             }
    222             int bufferL = 1024;
    223             byte[] buffer = new byte[bufferL];
    224             int readL = stream.Read(buffer, 0, bufferL);
    225             while (readL > 0)
    226             {
    227                 fs.Write(buffer, 0, readL);
    228                 readL = stream.Read(buffer, 0, bufferL);
    229             }
    230             stream.Close();
    231             response.Close();
    232             fs.Close();
    233         }
    234         /// <summary>
    235         /// 下载单个小文件
    236         /// </summary>
    237         /// <param name="vUrl">url路径</param>
    238         /// <param name="vFilePath">文件路径</param>
    239         /// <param name="vCover">是否覆盖</param>
    240         /// <returns></returns>
    241         public static byte[] DownLoad(string vUrl, string vFilePath)
    242         {
    243             byte[] buffer = Cnic.HttpHelper.LoadToByte(vUrl);
    244             FileStream fs = null;
    245             FileInfo f = new FileInfo(vFilePath);
    246             if (f.Directory.Exists == false)
    247             {
    248                 f.Directory.Create();
    249             }
    250             if (f.Exists == false)
    251             {
    252                 fs = f.Create();
    253             }
    254             else
    255             {
    256                 fs = new FileStream(vFilePath, FileMode.Open, FileAccess.Write);
    257             }
    258             fs.Write(buffer, 0, buffer.Length);
    259             fs.Flush();
    260             fs.Close();
    261             return buffer;
    262         }
    263 
    264         /// <summary>
    265         /// 下载多个Url到一个文件(小文件)
    266         /// </summary>
    267         /// <param name="urls">需要下载的url列表</param>
    268         /// <param name="vFilePath">文件路径</param>
    269         /// <returns>返回出错的url索引</returns>
    270         public static int DownLoad(List<string> urls, string vFilePath)
    271         {
    272             FileStream fs = new FileStream(vFilePath, FileMode.Create, FileAccess.Write);
    273             int i = 0;
    274             for (i = 0; i < urls.Count; i++)
    275             {
    276                 try
    277                 {
    278                     byte[] buffer = LoadToByte(urls[i]);
    279                     fs.Write(buffer, 0, buffer.Length);
    280                     fs.Flush();
    281                 }
    282                 catch
    283                 {
    284                     break;
    285                 }
    286             }
    287             fs.Close();
    288             return i;
    289         }
    290 
    291         /// <summary>
    292         /// 下载多个Url(小文件)
    293         /// </summary>
    294         /// <param name="urls">需要下载的url列表</param>
    295         /// <param name="vFilePaths">文件路径</param>
    296         /// <returns>返回出错的url索引,或者返回-1</returns>
    297         public static int DownLoad(List<string> urls, List<string> vFilePaths)
    298         {
    299             if (urls.Count != vFilePaths.Count) { return -1; }
    300             int rtun = -1;
    301             for (int i = 0; i < urls.Count; i++)
    302             {
    303                 try
    304                 {
    305                     byte[] buffer = LoadToByte(urls[i]);
    306                     FileStream fs = new FileStream(vFilePaths[i], FileMode.Create, FileAccess.Write);
    307                     fs.Write(buffer, 0, buffer.Length);
    308                     fs.Flush();
    309                     fs.Close();
    310                 }
    311                 catch
    312                 {
    313                     rtun = i;
    314                     break;
    315                 }
    316             }
    317             return rtun;
    318         }
    319 
    320 
    321         /// <summary>
    322         /// 加载数据
    323         /// </summary>
    324         /// <param name="vImgUrl">图片的Url</param>
    325         /// <returns></returns>
    326         public static byte[] LoadToByte(string vUrl)
    327         {
    328             HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(vUrl);
    329             request.ReadWriteTimeout = 30000;
    330             HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    331 
    332             Stream stream = response.GetResponseStream();
    333             int bufferL = 1024;
    334             byte[] buffer = new byte[bufferL];
    335             int readL = stream.Read(buffer, 0, bufferL);
    336             MemoryStream ms = new MemoryStream();
    337             while (readL > 0)
    338             {
    339                 ms.Write(buffer, 0, readL);
    340                 readL = stream.Read(buffer, 0, bufferL);
    341             }
    342             stream.Close();
    343             response.Close();
    344             byte[] rbtn = ms.ToArray();
    345             ms.Close();
    346             return rbtn;
    347         }
    348 
    349         public static string LoadToString(string vUrl)
    350         {
    351             HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(vUrl);
    352             HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    353             Stream stream = response.GetResponseStream();
    354             StreamReader reader = new StreamReader(stream);
    355             return reader.ReadToEnd();
    356         }
    357     }
    358     public class SystemHelper
    359     {
    360         public static bool PowerOffSystem()
    361         {
    362             return ExitSystem(Cnic.SafeNativeMethods.EWX_POWEROFF | Cnic.SafeNativeMethods.EWX_FORCE,false);
    363         }
    364 
    365         public static bool RebootSystem()
    366         {
    367             return ExitSystem(Cnic.SafeNativeMethods.EWX_REBOOT | Cnic.SafeNativeMethods.EWX_FORCE, false);
    368         }
    369 
    370         public static bool LogoffSystem()
    371         {
    372             return ExitSystem(Cnic.SafeNativeMethods.EWX_LOGOFF | Cnic.SafeNativeMethods.EWX_FORCE, false);
    373         }
    374         public static bool ShutdownSystem()
    375         {
    376             return ExitSystem(Cnic.SafeNativeMethods.EWX_SHUTDOWN | Cnic.SafeNativeMethods.EWX_FORCE, false);
    377         }
    378         public static bool LockSystem()
    379         {
    380             return Cnic.SafeNativeMethods.LockWorkStation();
    381         }
    382         public static bool ExitSystem(int ExitCode, bool vTipFlags)
    383         {
    384             IntPtr hToken = IntPtr.Zero;
    385             Cnic.SafeNativeMethods.TOKEN_PRIVILEGES tkp;
    386             if (!Cnic.SafeNativeMethods.OpenProcessToken(Cnic.SafeNativeMethods.GetCurrentProcess(), Cnic.SafeNativeMethods.TOKEN_ADJUST_PRIVILEGES | Cnic.SafeNativeMethods.TOKEN_QUERY, ref hToken))
    387             {
    388                 if (vTipFlags)
    389                 {
    390                     return false;
    391                 }
    392             }
    393             tkp.PrivilegeCount = 1;
    394             tkp.Luid = 0;
    395             tkp.Attributes = Cnic.SafeNativeMethods.SE_PRIVILEGE_ENABLED;
    396 
    397             Cnic.SafeNativeMethods.LookupPrivilegeValue(null, Cnic.SafeNativeMethods.SE_SHUTDOWN_NAME, ref tkp.Luid);
    398             Cnic.SafeNativeMethods.AdjustTokenPrivileges(hToken, false, ref tkp, 0, IntPtr.Zero, IntPtr.Zero);
    399             if (Cnic.SafeNativeMethods.GetLastError() != Cnic.SafeNativeMethods.ERROR_SUCCESS)
    400             {
    401                 if (vTipFlags)
    402                 {
    403                     return false;
    404                 }
    405             }
    406             if (!Cnic.SafeNativeMethods.ExitWindowsEx(ExitCode, 0)) { return false; }
    407             return true;
    408         }
    409 
    410         public static bool ExitSystem2()
    411         {
    412             Cnic.SafeNativeMethods.TOKEN_PRIVILEGES tp;
    413             //注意:这里用的是GetCurrentThread,而不是GetCurrentProcessIntPtr
    414             IntPtr hproc = Cnic.SafeNativeMethods.GetCurrentThread();
    415             IntPtr htok = IntPtr.Zero;
    416             //注意:这里用的是OpenThreadToken(打开线程令牌),而不是OpenProcessToken(打开进程令牌)
    417             if (Cnic.SafeNativeMethods.OpenThreadToken(hproc, Cnic.SafeNativeMethods.TOKEN_ADJUST_PRIVILEGES | Cnic.SafeNativeMethods.TOKEN_QUERY, true, ref htok))
    418             {
    419                 tp.PrivilegeCount = 1;
    420                 tp.Luid = 0;
    421                 tp.Attributes = Cnic.SafeNativeMethods.SE_PRIVILEGE_ENABLED;
    422                 if (Cnic.SafeNativeMethods.LookupPrivilegeValue(null, Cnic.SafeNativeMethods.SE_SHUTDOWN_NAME, ref tp.Luid))
    423                 {
    424                     if (Cnic.SafeNativeMethods.AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero))
    425                     {
    426                         if (Cnic.SafeNativeMethods.InitiateSystemShutdown("", "", 60, true, false))
    427                         {
    428                             return true;
    429                         }
    430                     }
    431                 }
    432             }
    433             return false;
    434         }
    435 
    436 
    437         public static bool SetMonitorPower(IntPtr vHandle,bool vOff)
    438         {
    439             return Cnic.SafeNativeMethods.SendMessage(vHandle, 0x0112, 0xF170, 2) == 0;
    440             //return Cnic.SafeNativeMethods.SendMessage(vHandle, Cnic.SafeNativeMethods.WM_SYSCOMMAND, Cnic.SafeNativeMethods.SC_MONITORPOWER, vOff ?2 : 1)==0;
    441         }
    442     }
    443 }
    View Code
  • 相关阅读:
    HTTP响应状态码整理
    Python通用爬虫,聚焦爬虫概念理解
    HTTP无状态协议理解
    会话与事务知识点总结
    并发一致性知识点整理
    使用隔离级别read committed隐式解决并发冲突
    多并发笔记整理
    git基本使用
    Docker其他
    Docker Bind Mount 与 Volume
  • 原文地址:https://www.cnblogs.com/CodeBase/p/3399955.html
Copyright © 2011-2022 走看看