【已更新】支持命令行參數(需.Net 3.5運行環境)

來源: 在城裏 2013-09-03 19:08:01 [] [博客] [舊帖] [給我悄悄話] 本文已被閱讀: 次 (9427 bytes)
回答: 用C#寫了個家長控製輔助小程序在城裏2013-08-23 19:08:53

using System;
using System.Threading;
using System.Security.Principal;
using System.Diagnostics;
using System.Windows.Forms;

/*  命令行使用舉例:
 *          例1:Helper.exe john -s 30 1000 1100
 *          如果用戶是john,那麽規定的時間段是10:00到11:00可以用電腦;否則30秒後關機;
 *          例2:Helper.exe john -l 25 1000 1100 1300 1400
 *          如果用戶是john,那麽規定的時間段是10:00到11:00,或者13:00到14:00可以用電腦,否則25秒後用戶注銷(退出)。          
 */

namespace Helper
{
    static class Program
    {
        static void Main(string[] args)
        {
            if (args.Length < 5)
                return; //參數的個數不少於5,否則就退出
           
            else
            {
                //第一個參數是要限製的用戶名
                string userName = args[0].ToUpper();

                string CurUserName = WindowsIdentity.GetCurrent().Name; //取得當前用戶名

                if (CurUserName.Split('\\')[1].ToUpper() == userName) //判斷登錄用戶名
                {
                    int start = 0;
                    int end = 0;
                    bool isBetween = true; //初始化是否超時的變量

                    try
                    {
                        while (isBetween)
                        {
                            bool flag = false; //判斷是否在時間段的標誌

                            //取得當前時間
                            int now = int.Parse(DateTime.Now.ToString("HHmm"));


                            for (int i = 3; i < args.Length; i = i + 2)
                            {
                                //接下來的時間段(開始時間:start,結束時間:end)
                                start = int.Parse(args[i]);
                                end = int.Parse(args[i + 1]);

                                if (start * end != 0 && end > start)
                                {
                                    //start 到 end 可以看電腦:)
                                    flag = flag | (now > start && now < end);
                                }
                                else
                                    flag = true; //如果參數設置無效,則開綠燈:)
                            }

                            if (!flag) //判斷是否在規定的時間段內
                                break;      //不在的話,停止循環, 也就是開紅燈:(
                            else
                                Thread.Sleep(60 * 1000); //每60秒判斷一次
                        }

                        //如果不在時間段內看電腦,延遲args[2]秒後關機或者注銷...
                        string shutdown = args[1] + " -f -t " + int.Parse(args[2]);
                        System.Diagnostics.Process.Start(@"C:/WINDOWS/system32/Shutdown", shutdown);
                    }
                    catch (Exception e)
                    {
                        //MessageBox.Show("exception"); 出現異常,結束程序
                    }

                }
            }
        }
    }
}
 

所有跟帖: 

命令行中指定用戶名,關機/注銷,延時時間和使用電腦的一個或多個時間段 -在城裏- 給 在城裏 發送悄悄話 在城裏 的博客首頁 (120 bytes) () 09/03/2013 postreply 19:17:46

請您先登陸,再發跟帖!

發現Adblock插件

如要繼續瀏覽
請支持本站 請務必在本站關閉/移除任何Adblock

關閉Adblock後 請點擊

請參考如何關閉Adblock/Adblock plus

安裝Adblock plus用戶請點擊瀏覽器圖標
選擇“Disable on www.wenxuecity.com”

安裝Adblock用戶請點擊圖標
選擇“don't run on pages on this domain”