public static SafeTokenHandle FromProcess(IntPtr hProcess, AccessTypes desiredAccess = AccessTypes.TokenDuplicate)
            {
                SafeTokenHandle val;

                if (!NativeMethods.OpenProcessToken(hProcess, desiredAccess, out val))
                {
                    throw new System.ComponentModel.Win32Exception();
                }
                return(val);
            }