/// <summary>
		/// 以某一权限开始执行一个进程
		/// </summary>
		/// <param name="programFullName">程序路径(全名)</param>
		/// <param name="level">级别(c/受限的,u/不信任的,n/正常用户)</param>
		/// <param name="commandArgs">命令行参数</param>
		/// <returns></returns>
		public int StartProcess(string programFullName, string level, string commandArgs, bool isHide)
		{
			int saferLevel = getRightLevel(level);
			int status = 0;
			IntPtr authzLevel = IntPtr.Zero;
			if (SafeNativeMethods.SaferCreateLevel(SafeNativeMethods.SAFER_SCOPEID_USER, saferLevel, 0, ref authzLevel, IntPtr.Zero) != 0)
			{
				IntPtr token = IntPtr.Zero;
				if (SafeNativeMethods.SaferComputeTokenFromLevel(authzLevel, IntPtr.Zero, out token, 0, IntPtr.Zero) != 0)
				{
					STARTUPINFO si = new STARTUPINFO();
					si.dwFlags = STARTF.STARTF_USESHOWWINDOW;
					si.wShowWindow = isHide ? WindowShowStyle.Hide : WindowShowStyle.ShowNormal;
					si.cb = Marshal.SizeOf(typeof(STARTUPINFO));

					PROCESS_INFORMATION pi;
					if (SafeNativeMethods.CreateProcessAsUser(token, null, getCommandLine(programFullName, commandArgs), IntPtr.Zero, IntPtr.Zero, 0, SafeNativeMethods.CREATE_NEW_CONSOLE, IntPtr.Zero, IntPtr.Zero, ref si, out pi) != 0)//这里CreateProcessAsUser的lpApplicationName置空,仅使用commandLine参数来启动程序。
					{

						SafeNativeMethods.CloseHandle(pi.hProcess);

						SafeNativeMethods.CloseHandle(pi.hThread);
					}
					else
					{
						status = Marshal.GetLastWin32Error();
					}
				}
				else
				{
					status = Marshal.GetLastWin32Error();
				}

				SafeNativeMethods.SaferCloseLevel(authzLevel);
			}
			else
			{
				status = Marshal.GetLastWin32Error();
			}

			return status;
		}
		public static extern int CreateProcessAsUser(IntPtr hToken, string lpApplicationName, string lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes, int bInheritHandles, uint dwCreationFlags, IntPtr lpEnvironment, IntPtr lpCurrentDirectory, ref STARTUPINFO lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation);