Windows自動隱藏任務欄bat腳本


問題:

因爲某些特殊原因,需要在AD域用戶登陸Window 桌面時,任務欄會自動隱藏,但是AD域策略並不提供對應的策略,於是需要寫個bat文件,讓域控服務器在用戶登陸時會自動執行這條bat。


代碼:

這段代碼是在網上找的。經測驗,可以使用。但是在(域策略下發成功後)用戶第一次登陸時並不能成功自動隱藏任務欄,而是在註銷用戶或者重啓計算機後,第二次登陸才能開始自動隱藏任務欄。




/*&cls
@echo off
set "netpath=%systemroot%\Microsoft.NET\Framework"
for /f "delims=" %%a in ('dir /ad /b "%netpath%\v?.*"') do (
     if exist "%netpath%\%%a\csc.exe" (
         set "cscpath=%netpath%\%%a\csc.exe"
         goto :0
     )
)
echo;未安裝.Net Framework 2.0及其上版本組件或相關程序丟失&pause&exit
:0
if not exist "%tmp%\$TaskBarHider.exe" (
     "%cscpath%" /nologo /out:"%tmp%\$TaskBarHider.exe" "%~f0"
)
"%tmp%\$TaskBarHider.exe" h
pause&exit
*/
using System;
using System.Runtime.InteropServices;
class TaskBarHider
{
     public struct RECT
     {
         public int Left;
         public int Top;
         public int Right;
         public int Bottom;
     }
     public struct APPBARDATA
     {
         public int cbSize;
         public int hwnd;
         public int uCallbackMessage;
         public int uEdge;
         public RECT rc;
         public int lParam;
     }
     public const int ABS_ALWAYSONTOP = 0x002;
     public const int ABS_AUTOHIDE = 0x001;
     public const int ABM_SETSTATE = 0x00A;
 
     [DllImport("shell32.dll")]
     public static extern int SHAppBarMessage(int dwmsg, ref APPBARDATA app);
     [DllImport("user32.dll", EntryPoint = "FindWindow")]
     public static extern int FindWindow(string lpClassName, string lpWindowName);
 
     public static void SetAppBarAutoDisplay(bool IsAuto)
     {
         APPBARDATA abd = new APPBARDATA();
         abd.hwnd = FindWindow("Shell_TrayWnd", "");
         if (IsAuto)
         {
             abd.lParam = ABS_AUTOHIDE;
             SHAppBarMessage(ABM_SETSTATE, ref abd);
         }
         else
         {
             abd.lParam = ABS_ALWAYSONTOP;
             SHAppBarMessage(ABM_SETSTATE, ref abd);
         }
     }
     static void Main(string[] args)
     {
         bool sta=false;
         if(args.Length==0)
         {
             Console.WriteLine("$TaskBarHider.exe [s/h]  顯示/隱藏任務欄");
         }
         else
         {
             if(args[0] == "h" || args[0] == "H"){sta=true;}
             SetAppBarAutoDisplay(sta);
         }
         
     }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章