예제 #1
0
        /// <summary>
        /// 初回起動向けに,全てのユーザーアカウントに対して,ディレクトリ作成済みフラグを付けます.
        /// </summary>
        static void firstRun()
        {
            logger.Info("初回起動のため,データベース初期化を行います.");

            HistoryManager.connect();
            HistoryManager.initialize();

            DirectorySearcher src = new DirectorySearcher("(objectClass=User)");

            foreach (SearchResult result in src.FindAll())
            {
                HistoryManager.add(result.Properties["samAccountName"].OfType <string>().First(), false);
            }

            logger.Info("データベース初期化が完了しました.");
        }
예제 #2
0
        static void Main(string[] args)
        {
            logger.Info("Startup");

            if (!File.Exists(HistoryManager.dbFile))
            {
                firstRun();
            }

            HistoryManager.connect();

            string domain   = Environment.ExpandEnvironmentVariables("%USERDNSDOMAIN%");
            string domainDN = @"DC=" + domain.Replace(@".", @",DC=");

            try
            {
                logger.Info("ドメインコントローラーへの接続を試行してます.");
                using (LdapConnection connect = new LdapConnection(domain))
                    using (ChangeNotifier notifier = new ChangeNotifier(connect))
                    {
                        //register some objects for notifications (limit 5)
                        notifier.Register(domainDN, ldapFilter,
                                          System.DirectoryServices.Protocols.SearchScope.Subtree);

                        notifier.ObjectChanged += new EventHandler <ObjectChangedEventArgs>(notifier_ObjectChanged);

                        logger.Info("ドメインコントローラーへの接続に成功しました.変更監視を開始します.");

                        Console.ReadLine();
                    }
            }
            finally
            {
                logger.Info("Shutdown");
            }
        }