public class FileUtil
{
[DllImport("kernel32.dll")]
private static extern IntPtr _lopen(string lpPathName, int iReadWrite);
[DllImport("kernel32.dll")]
public static extern bool CloseHandle(IntPtr hHandle);
private const int OF_READWRITE = 2;
private const int OF_SHARE_DENY_NONE = 0x40;
private static readonly IntPtr HFILE_ERROR = new IntPtr(-1);
/// <summary>
/// 查看文件是否被占用
/// </summary>
/// <param name="filePath">文件路径</param>
/// <returns></returns>
public static bool IsOccupied(string filePath)
{
IntPtr vHandle = _lopen(filePath, OF_READWRITE | OF_SHARE_DENY_NONE);
if(vHandle == HFILE_ERROR)
{
return true;
}
CloseHandle(vHandle);
return false;
}
}
标签: .NET
C# .NET MD5 32位 加密
微软官方从.NET Framework 4之后不再支持System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(string password, string passwordFormat)
方法。MD5加密需要自行实现。需要注意的是该方法加密结果是小写,而 HashPasswordForStoringInConfigFile
加密结果是大写
public static string MD5Encrypt(string input)
{
StringBuilder builder = new StringBuilder();
using (MD5CryptoServiceProvider md5Crypto = new MD5CryptoServiceProvider())
{
byte[] data = md5Crypto.ComputeHash(Encoding.UTF8.GetBytes(input));
for (int i = 0; i < data.Length; i++)
{
builder.Append(data[i].ToString("x2"));
}
}
return builder.ToString();
}
C# .NET DES 加密解密
using System;
using System.Text;
using System.Security.Cryptography;
namespace Utility.Security
{
/// <summary>
/// DES加密/解密类。
/// </summary>
public class DESEncrypt
{
/// <summary>
/// 加密数据
/// </summary>
public static string Encrypt(string Text, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray;
inputByteArray = Encoding.Default.GetBytes(Text);
des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);
}
return ret.ToString();
}
/// <summary>
/// 解密数据
/// </summary>
public static string Decrypt(string Text, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
int len;
len = Text.Length / 2;
byte[] inputByteArray = new byte[len];
int x, i;
for (x = 0; x < len; x++)
{
i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);
inputByteArray[x] = (byte)i;
}
des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return Encoding.Default.GetString(ms.ToArray());
}
}
}
C# .NET 使用Adobe Acrobat Pro实现PDF转Execl
public sealed class AcrobatUtil
{
public string ConvertToExecl(string inputFileName, string outputFileName)
{
//判断文件是否存在
if (!File.Exists(inputFileName))
{
return "File Is Missing";
}
try
{
//判断是否已经安装Acrobat
string acrobatPath = GetAppPath();
if (acrobatPath == null)
{
return "Adobe Acrobat not installed.";
}
var aVDoc = new AcroAVDoc();
aVDoc.Open(inputFileName, "");
CAcroPDDoc PDDoc = (CAcroPDDoc)aVDoc.GetPDDoc();
object jsObj = PDDoc.GetJSObject();
var jsObjType = jsObj.GetType();
//另存为
jsObjType.InvokeMember(
"saveAs",
BindingFlags.InvokeMethod |
BindingFlags.Public |
BindingFlags.Instance,
null, jsObj, new object[] { outputFileName, "com.adobe.acrobat.xlsx" });
/*
另存为更多格式
html htm com.adobe.acrobat.html
jpeg jpg com.adobe.acrobat.jpeg
docx com.adobe.acrobat.docx
doc com.adobe.acrobat.doc
png com.adobe.acrobat.png
ps com.adobe.acrobat.ps
rft com.adobe.acrobat.rft
xlsx com.adobe.acrobat.xlsx
xls com.adobe.acrobat.spreadsheet
txt com.adobe.acrobat.accesstext
tiff tif com.adobe.acrobat.tiff
xml com.adobe.acrobat.xml-1-00
*/
//关闭文档
aVDoc.Close(1);
}
catch (Exception ex)
{
return "Error:" + ex.Message;
}
return null;
}
//获取Acrobat安装路径
private string GetAppPath()
{
string acrobatPath = null;
using (RegistryKey acrobatRegistryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Adobe\Adobe Acrobat"))
{
if (acrobatRegistryKey == null)
{
return acrobatPath;
}
string acrobatVersion = acrobatRegistryKey.GetValue("TrackName").ToString();
using (RegistryKey acrobatInstallPathRegistryKey = acrobatRegistryKey.OpenSubKey(acrobatVersion + @"\InstallPath"))
{
if (acrobatInstallPathRegistryKey == null)
{
return acrobatPath;
}
acrobatPath = acrobatInstallPathRegistryKey.GetValue("").ToString() + @"\Acrobat.exe";
}
}
return acrobatPath;
}
}