コード例 #1
0
        /// <summary>
        /// Tries to impersonate the current process as the user which runs explorer.exe currently. The caller should always call <see cref="IDisposable.Dispose"/> on
        /// the returned instance to revert identity to self.
        /// </summary>
        private static ImpersonationHelper.ImpersonationContext ImpersonateUser(ImpersonationHelper.ImpersonationContext requestedIdentity)
        {
            NetworkNeighborhoodResourceProviderSettings settings = _settings.Settings;

            ImpersonationHelper.ImpersonationContext ctx = null;

            // Prefer to impersonate current interactive user.
            if (settings.ImpersonateInteractive)
            {
                if (requestedIdentity != null && !ImpersonationHelper.RequiresImpersonate(requestedIdentity.Identity))
                {
                    return(null);
                }

                ctx = ImpersonationHelper.ImpersonateByProcess("explorer");
            }
            if (ctx != null)
            {
                return(ctx);
            }

            // Second way based on network credentials.
            if (settings.UseCredentials)
            {
                ctx = ImpersonationHelper.ImpersonateUser(settings.NetworkUserName, settings.NetworkPassword);
            }

            return(ctx);
        }
コード例 #2
0
        private void InitModel()
        {
            IServerSettingsClient settingsManager = ServiceRegistration.Get <IServerSettingsClient>();
            NetworkNeighborhoodResourceProviderSettings settings = settingsManager.Load <NetworkNeighborhoodResourceProviderSettings>();

            ImpersonateInteractive = settings.ImpersonateInteractive;
            UseCredentials         = settings.UseCredentials;
            NetworkUserName        = settings.NetworkUserName;
            NetworkPassword        = settings.NetworkPassword;
        }
コード例 #3
0
        /// <summary>
        /// Saves the current state to the settings file.
        /// </summary>
        public void SaveSettings()
        {
            IServerSettingsClient settingsManager = ServiceRegistration.Get <IServerSettingsClient>();
            NetworkNeighborhoodResourceProviderSettings settings = settingsManager.Load <NetworkNeighborhoodResourceProviderSettings>();

            settings.ImpersonateInteractive = ImpersonateInteractive;
            settings.UseCredentials         = UseCredentials;
            settings.NetworkUserName        = NetworkUserName;
            settings.NetworkPassword        = NetworkPassword;
            settingsManager.Save(settings);
        }