public async Task GetRegistryEntriesSuccessAsyncTest()
        {
            string                machineName = System.Environment.MachineName;
            string                rootKey     = "Console";
            RegistryHive          hive        = RegistryHive.CurrentUser;
            RegistryEntriesResult result      = await RegistryCompare.GetRegistryEntriesAsync(hive, rootKey, machineName);

            Assert.IsTrue(result.RegistryEntries.Count > 0, "That key does not have any entries.");
        }
        public void GetRegistryEntriesSuccessTest()
        {
            string                machineName = System.Environment.MachineName;
            string                rootKey     = "Console";
            RegistryHive          hive        = RegistryHive.CurrentUser;
            RegistryEntriesResult result      = RegistryCompare.GetRegistryEntries(RegistryHive.CurrentUser, rootKey, machineName);

            Assert.IsTrue(result.Successful);
        }
        public static async Task <RegistryEntriesResult> GetRegistryEntriesAsync(RegistryHive registryHive, string rootKey, string machineName)
        {
            Task <RegistryEntriesResult> regKeysMachine = Task <RegistryEntriesResult> .Factory.StartNew(() =>
            {
                RegistryEntriesResult result = GetRegistryEntries(registryHive, rootKey, machineName);
                return(result);
            });

            await regKeysMachine;

            return(regKeysMachine.Result);
        }
        private async Task <List <RegistryEntry> > GetRegisty(RegistryHive registryHive, string machineName, Label machineLabel, CancellationTokenSource tokenSource, CancellationToken token)
        {
            machineLabel.Text    = "Loading Registry";
            machineLabel.Visible = true;

            RegistryEntriesResult result = await RegistryCompare.GetRegistryEntriesAsync(registryHive, textbox_registryKeyRoot.Text, machineName, tokenSource, token, _testConnectionTimeout);

            if (!result.Successful)
            {
                if (result.ErrorCode == ErrorCodes.SECURITY_EXCEPTION ||
                    result.ErrorCode == ErrorCodes.UNAUTHORIZED_ACCESS_EXCEPTION)
                {
                    machineLabel.Text = "Access Denied";
                }
                else if (result.ErrorCode == ErrorCodes.IO_EXCEPTION)
                {
                    machineLabel.Text = "Invalid Machine Name.";
                }
                else if (result.ErrorCode == ErrorCodes.TIMEOUT)
                {
                    machineLabel.Text = "Connection Timeout.";
                }

                try
                {
                    tokenSource.Cancel();
                    token.ThrowIfCancellationRequested();
                }
                catch (OperationCanceledException)
                {
                    SetStatusStripText("Error");
                    return(new List <RegistryEntry>()
                    {
                    });
                }
            }
            SetStatusStripText("Success");
            machineLabel.Text = "Loaded";
            return(result.RegistryEntries);
        }
        public static async Task <RegistryEntriesResult> GetRegistryEntriesAsync(RegistryHive registryHive, string rootKey, string machineName, CancellationTokenSource tokenSource, CancellationToken token, int timeout)
        {
            Task <RegistryEntriesResult> regKeysMachine = Task <RegistryEntriesResult> .Factory.StartNew(() =>
            {
                RegistryEntriesResult result = GetRegistryEntries(registryHive, rootKey, machineName);
                return(result);
            }, tokenSource.Token);

            if (await Task.WhenAny(regKeysMachine, Task.Delay(timeout, token)) == regKeysMachine)
            {
                await regKeysMachine;
                return(regKeysMachine.Result);
            }
            else
            {
                try
                {
                    tokenSource.Cancel();
                    token.ThrowIfCancellationRequested();
                }
                catch (Exception ex)
                {
                    return(new RegistryEntriesResult()
                    {
                        Successful = false,
                        Exception = ex,
                        Message = ex.Message,
                        RegistryEntries = new List <RegistryEntry>()
                    });
                }
            }

            return(new RegistryEntriesResult()
            {
                Successful = true,
                RegistryEntries = new List <RegistryEntry>()
            });
        }
        public async Task GetRegistryEntriesFailedAsyncTest()
        {
            RegistryEntriesResult result = await RegistryCompare.GetRegistryEntriesAsync(RegistryHive.CurrentUser, "somekey", "machinea");

            Assert.AreEqual(0, result.RegistryEntries.Count);
        }
        public void GetRegistryEntriesFailTest()
        {
            RegistryEntriesResult result = RegistryCompare.GetRegistryEntries(RegistryHive.CurrentUser, "somekey", "machinea");

            Assert.IsFalse(result.Successful);
        }