public void CanBeBuiltFromDictionary()
        {
            var env = EnvironmentBlock.Create(new Dictionary <string, string> {
                { "FOO", "BAR" }
            });
            var dict = env.ToDictionary();

            Assert.Equal(1, dict.Count);
            Assert.Equal("BAR", dict["FOO"]);
        }
        public void MergeOverwritesOld()
        {
            var env    = EnvironmentBlock.CreateSystemDefault();
            var newEnv = EnvironmentBlock.Create(new Hashtable {
                { "TMP", "FOOBAR" }
            });
            var dict = env.Merge(newEnv).ToDictionary();

            Assert.Equal(env.ToDictionary().Count, dict.Count);
            Assert.Equal("FOOBAR", dict["TMP"]);
        }
示例#3
0
        /// <summary>
        /// Returns default environment for the process.
        /// If credentials are specified then the default environment is the default for that user.
        /// Otherwise the default is to inherit from this process.
        /// </summary>
        private Dictionary <string, string> CreateDefaultProcessEnvironment(NetworkCredential credential)
        {
            EnvironmentBlock envBlock = new EnvironmentBlock();

            if (credential == null)
            {
                envBlock = EnvironmentBlock.Create(Environment.GetEnvironmentVariables());
            }
            else
            {
                using (var safeUserToken = Utils.LogonAndGetUserPrimaryToken(credential))
                {
                    envBlock = EnvironmentBlock.CreateForUser(safeUserToken.DangerousGetHandle());
                }
            }

            return(envBlock.ToDictionary());
        }