Пример #1
0
        private IntPtr GetTokenHandle()
        {
            IntPtr zero  = IntPtr.Zero;
            IntPtr zero2 = IntPtr.Zero;
            int    num   = 0;

            if (!NativeMethodProvider.OpenThreadToken(NativeMethodProvider.GetCurrentThread(), 8U, true, ref zero))
            {
                num = Marshal.GetLastWin32Error();
                if (num == 1008)
                {
                    num = 0;
                    if (!NativeMethodProvider.OpenProcessToken(NativeMethodProvider.GetCurrentProcess(), 8U, ref zero))
                    {
                        num = Marshal.GetLastWin32Error();
                    }
                }
            }
            if (num != 0)
            {
                throw new Win32Exception(num);
            }
            return(zero);
        }