if not "%1" == "minimumized" ( start /min cmd /c call "%~f0" minimumized exit /b ) echo minimumized!! pause
Windowsストアアプリを削除する
PowerShellで下記コマンドを実行し、削除したいアプリのnameを確認する。
Get-AppxPackage "*検索値*"
同じくPowerShellで下記コマンドを実行して削除する。
Get-AppxPackage [前手順で確認したName] | Remove-AppxPackage
batファイルでOS毎に処理を分岐させる
verコマンドの結果を取得して分岐処理する。
@echo off for /f "usebackq tokens=*" %%i in (`ver`) do set version=%%i if not "%version:Version 10=%" == "%version%" goto WIN10 if not "%version:Version 6.3=%" == "%version%" goto WIN8.1 if not "%version:Version 6.2=%" == "%version%" goto WIN8 if not "%version:Version 6.1=%" == "%version%" goto WIN7 goto FIN :WIN10 echo win10 goto FIN :WIN8.1 echo win8.1 goto FIN :WIN8 echo win8 goto FIN :WIN7 echo win7 goto FIN :FIN pause
コマンドプロンプトでアクセス権を変更する
フォルダ C:\test 及び以下のサブフォルダとファイルに Administrator をフルコントロールで追加する。
icacls C:\test /grant Administrator:(OI)(CI)F /T
フォルダ C:\test 及び以下のサブフォルダとファイルに test-user を読み取りと実行権限で追加する。
icacls C:\test /grant test-user:(OI)(CI)RX /T
フォルダ C:\test 及び以下のサブフォルダとファイルに test-group を変更権限で追加する。
icacls C:\test /grant test-user:(OI)(CI)M /T
フォルダ C:\test 及び以下のサブフォルダとファイルの所有者を Administrators に変更する。
icacls C:\test /setowner Administrators /T
ファイル C:\text.txt のアクセス権から Administrators を削除する。
icacls C:\test.txt /remove Administrators
ディスクの管理で削除できないEFIなどの特殊なパーティションを削除する
1. 管理者としてコマンドプロンプトを実行
2. 下記コマンドを実行しDISKPARTを起動
diskpart
3. ディスク一覧を見る
list disk
4. ディスクを選択する
select disk [3で確認したディスクNo]
5. パーティション一覧を見る
list partition
6. パーティションを選択する
select partition [5で確認したパーティションNo]
7. パーティションを削除
delete partition override
8. 終了させる
exit
WindowsでSSID毎に設定を変更するbatファイル
下記内容でbatファイルを作成する。
更に同ディレクトリにSSIDと同じ名前のbatファイルを作成しておき、それぞれの処理を記述する。設定対象外のSSID用の処理はother.batに記述して同じく配置する。
作成した下記内容のbatファイルをタスクスケジューラに登録し、任意のタイミング、任意の権限で自動実行させると良いと思います。
setlocal enabledelayedexpansion :: netshの結果を取得する set netshresult= for /f "usebackq tokens=*" %%i in (`netsh wlan show interfaces`) do ( set netshresult=!netshresult!^%%i ) :: 設定1 set ssid=test-ssid1 call set compare=%%netshresult:%ssid%=%% if not "%netshresult%" == "%compare%" goto CHANGE :: 設定2 set ssid=test-ssid2 call set compare=%%netshresult:%ssid%=%% if not "%netshresult%" == "%compare%" goto CHANGE :: その他のSSID set ssid=other :: 変更処理 :CHANGE :: SSIDと同じ名前のbatファイルを呼び出す call %~dp0\%ssid%.bat :END endlocal
Windowsの設定をGUI以外の方法で変更する
デフォルトのユーザープロファイルに対するレジストリ設定
- regeditを起動しHKUにフォーカスして「ファイル」→「ハイブの読み込み」から「C:\Users\Default\NTUSER.DAT」を指定し、名前をDefaultProfileにする。
- そのままregeditでレジストリを変更するか「reg add “HKU\DefaultProfile\SOFTWARE…」のようにコマンドで変更する。
- 再度regeditでDefaultProfileにフォーカスして「ファイル」→「ハイブのアンロード」で元に戻す。
初回ログイン時のスタート画面を構成する
構成済みアカウントから下記コマンドでバックアップしてDefaultプロファイルに配置する。
対象OS:Win10(AnniversaryUpdate以上)
@powershell Export-StartLayout -path C:\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml
ストアアプリの自動更新を無効にする
対象OS:Win10
reg add "HKLM\SOFTWARE\Policies\Microsoft\WindowsStore" /v AutoDownload /t REG_DWORD /d 3 /f
ときどきスタート画面におすすめを表示しない
対象OS:Win10
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v SystemPaneSuggestionsEnabled /t REG_DWORD /d 0 /f
Windowsを使用するためのヒントやおすすめの通知を非表示にする
対象OS:Win10
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v SoftLandingEnabled /t REG_DWORD /d 0 /f
“Windowsへようこそ”の通知を非表示にする
対象OS:Win10
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v SubscribedContent-310093Enabled /t REG_DWORD /d 0 /f
Windowsで通常使うプリンターを管理しない
対象OS:Win10
reg add "HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v LegacyDefaultPrinterMode /t REG_DWORD /d 1 /f
WindowsUpdateの延期を無効にする
対象OS:Win10
reg add "HKLM\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v DeferFeatureUpdatesPeriodInDays /t REG_DWORD /d 0 /f reg add "HKLM\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v DeferQualityUpdatesPeriodInDays /t REG_DWORD /d 0 /f reg add "HKLM\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v FlightSettingsMaxPauseDays /t REG_DWORD /d 1 /f
WindowsUpdateの更新方法を構成する
対象OS:Win7、Win8、Win10
REM 1:自動更新無効、0:自動更新有効 reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v NoAutoUpdate /t REG_DWORD /d 0 /f REM 1:無効、2:更新あったら通知、3:自動ダウンロードと通知、4:自動インストール reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v AUOptions /t REG_DWORD /d 4 /f
WindowsUpdate後の強制再起動を構成する
対象OS:Win7、Win8、Win10
REM 1:再起動を強制しない、0:強制的に再起動される reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v AUOptions /t REG_DWORD /d 4 /f
WindowsUpdateのスケジュールを構成する
対象OS:Win7、Win8、Win10
REM 0:毎日、1:毎週日曜日~7:毎週土曜日 reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v ScheduledInstallDay /t REG_DWORD /d 0 /f REM 0~23(0時~23時)で指定 reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v ScheduledInstallTime /t REG_DWORD /d 12 /f
初回サインインのアニメーションを無効にする
対象OS:Win8、Win10
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableFirstLogonAnimation /t REG_DWORD /d 0 /f
エクスプローラーの初期画面を「PC」に変更
対象OS:Win10
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v LaunchTo /t REG_DWORD /d 1 /f
タスクバーのストアを削除する
下記内容のVBSを作成して実行する。
対象OS:Win10
For Each verb In CreateObject("Shell.Application").Namespace("shell:AppsFolder").ParseName("Microsoft.WindowsStore_8wekyb3d8bbwe!App").Verbs If verb.name = "タスク バーからピン留めを外す(&K)" Then verb.DoIt Next
タスクバーのMediaPlayerを削除する
下記内容のVBSを作成して実行する。
対象OS:Win7
path = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERPROFILE%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar") Set Folder = CreateObject("Shell.Application").NameSpace(path) For Each FolderItem In Folder.Items() If FolderItem.Name = "Windows Media Player" Then For Each Verb In FolderItem.Verbs If Verb.Name="タスク バーに表示しない(&K)" Then Verb.Doit Next End If Next
スクリーンセーバーのロックアウトを構成する
対象OS:Win7、Win8、Win10
REM 再開時にログオン画面に戻るチェックON reg add "HKCU\Control Panel\Desktop" /v ScreenSaverIsSecure /t REG_SZ /d "1" /f REM 待ち時間(秒) reg add "HKCU\Control Panel\Desktop" /v ScreenSaveTimeOut /t REG_SZ /d "600" /f
Ctrl+Alt+Delによるサインインを有効にする
対象OS:Win7、Win8、Win10
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v DisableCAD /t REG_DWORD /d 0 /f
ネットワークレベル認証でリモートデスクトップを有効にする
対象OS:Win7、Win8、Win10
reg add "HKLM\SYSTEM\ControlSet001\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f reg add "HKLM\SYSTEM\ControlSet001\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 1 /f
ファイアウォールを有効にする
対象OS:Win7、Win8、Win10
netsh advfirewall set allprofiles state on
プログラムの例外をファイアウォールに登録する
対象OS:Win7、Win8、Win10
netsh advfirewall firewall add rule name="プログラム名など" dir=in action=allow program="%programfiles%\Test Package\test_program.exe" enable=yes
ポートの例外をファイアウォールに登録する
対象OS:Win7、Win8、Win10
netsh advfirewall firewall add rule name="TCP Port 80" dir=in action=allow protocol=TCP localport=80
IPv6を無効にする
対象OS:Win7、Win8、Win10
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters" /v DisabledComponents /t REG_DWORD /d 4294967295 /f
リモートデスクトップをファイアウォールの例外に登録する
下記内容のVBSを作成して実行する。
対象OS:Win7、Win8、Win10
Dim wscriptShell Set wscriptShell = CreateObject("WScript.Shell") Dim root root = "HKEY_LOCAL_MACHINE" Dim key key = "\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules" Set exec = wscriptShell.Exec("cmd /c reg query """ & root & key & """ /v ""RemoteDesktop-*""") Dim result result = exec.StdOut.ReadAll Dim values values = Replace(result, root & key, "") Dim arrayTempValues arrayTempValues = Split(values, "検") values = arrayTempValues(0) Dim arrayValues arrayValues = Split(values, vbNewLine) For i = 0 to Ubound(arrayValues) Dim valueString valueString = Trim(arrayValues(i)) if Len(valueString) > 0 Then Dim fields fields = Split(valueString, " ") Dim name name = fields(0) Dim value value = fields(2) value = Replace(value, "Active=FALSE", "Active=TRUE") wscriptShell.RegWrite "HKLM" & key & "\" & name, value End if Next
コントロールパネルをクラシック表示にする
対象OS:Win7、Win8、Win10
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v ForceClassicControlPanel /t REG_DWORD /d 1 /f
最近開いた項目を非表示にする
対象OS:Win7、Win8、Win10
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Start_TrackDocs /t REG_DWORD /d 0 /f
最近開いたプログラムを非表示にする
対象OS:Win7、Win8、Win10
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Start_TrackProgs /t REG_DWORD /d 0 /f
エクスプローラーのセキュリティタブを非表示にする
対象OS:Win7、Win8、Win10
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v NoSecurityTab /t REG_DWORD /d 1 /f
ネットワークドライブを管理者権限と通常権限で共有するよう構成する
対象OS:Win7、Win8、Win10
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLinkedConnections /t REG_DWORD /d 1 /f
Windowsの電源操作を禁止する
対象OS:Win7、Win8、Win10
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v NoClose /t REG_DWORD /d 1 /f
Windowsのサインアウト(ログオフ)を禁止する
対象OS:Win7、Win8、Win10
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v StartMenuLogOff /t REG_DWORD /d 1 /f
コンピューターのロックを削除する
対象OS:Win7、Win8、Win10
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v DisableLockWorkstation /t REG_DWORD /d 1 /f
パスワードの変更を削除する
対象OS:Win7、Win8、Win10
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v DisableChangePassword /t REG_DWORD /d 1 /f
サービスからのCtrl+Alt+Deleteシミュレートを有効にする
対象OS:Win7、Win8、Win10
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v SoftwareSASGeneration /t REG_DWORD /d 1 /f
ネットワーク認証のためにパスワードおよび資格情報を保存することを許可しない
対象OS:Win7、Win8、Win10
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v disabledomaincreds /t REG_DWORD /d 1 /f
PowerShellのスクリプトの実行を有効にする
対象OS:Win7、Win8、Win10
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell" /v EnableScripts /t REG_DWORD /d 1 /f
PowerShellのスクリプトの実行ポリシーを変更する
対象OS:Win7、Win8、Win10
REM 署名済みのみ:AllSigned、ローカルスクリプト+署名済み:RemoteSigned、すべて許可する:Unrestricted reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell" /v ExecutionPolicy /t REG_DWORD /d RemoteSigned /f
ユーザーごとのプリンタの印刷設定をエクスポート・インポートする
対象OS:Win7、Win8、Win10
REM 設定済みの状態ですべてのプリンタの設定データをエクスポートする reg export "HKCU\Printers\DevModePerUser" C:\Users\User\Desktop\user_printer_settings.reg REM 未設定のパソコンでエクスポートした設定データをインポートする reg import C:\Users\User\Desktop\user_printer_settings.reg
スクリーンセーバーを構成する
対象OS:Win7、Win8、Win10
REM スクリーンセーバーをブランク reg add "HKCU\Control Panel\Desktop" /v ScreenSaveActive /t REG_SZ /d 1 /f reg add "HKCU\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\WINDOWS\system32\scrnsave.scr /f REM タイムアウトを30分 reg add "HKCU\Control Panel\Desktop" /v ScreenSaveTimeOut /t REG_SZ /d 1800 /f REM 再開時にログイン画面に戻る reg add "HKCU\Control Panel\Desktop" /v ScreenSaverIsSecure /t REG_SZ /d 1 /f
CentOS7+Samba4のActiveDirectory環境でのSMB共有
CentOS7にSamba4(4.6.5)をインストールし、ActiveDirectoryを構築した環境でWindowsからSMBプロトコルでアクセスする。
※Samba4にてドメインコントローラーの構築が完了している前提
共有用のディレクトリを作成する。
今回は /home/samba/share/ でやる。
# mkdir /home/share/ # chmod 777 /home/share/
/usr/local/samba/etc/smb.confを編集する。
[global] unix charset = UTF8 dos charset = CP932 netbios name = TEST-DC1 realm = LOCAL.EXAMPLE.COM workgroup = EXAMPLE dns forwarder = 8.8.8.8 server string = TEST-DC1 server role = active directory domain controller idmap_ldb:use rfc2307 = yes [share] path = /home/share/ comment = EXAMPLE\AdministratorとEXAMPLE\DomainUsersのみが読み書き可能 read only = no valid users = Administrator "@domain users" inherit acls = yes inherit owner = yes inherit permissions = yes vfs objects = acl_xattr streams_xattr
Sambaサービスを再起動して動作を確認する。
CentOS7+Samba4での無料ActiveDirectory構築
今回はプライマリとセカンダリの2台を構成する。
プライマリとセカンダリの共通設定
ホスト名の設定。それぞれ test-dc1 test-dc2 とする。
# hostnamectl set-hostname test-dc1
NTPサーバーにする。
※構築手順はこちらの記事を参照
必要なコンポーネントのインストールらしい。
yum -y install \ perl \ gcc \ libacl-devel \ libblkid-devel \ gnutls-devel \ readline-devel \ python-devel \ gdb \ pkgconfig \ krb5-workstation \ zlib-devel \ setroubleshoot-server \ libaio-devel \ setroubleshoot-plugins \ policycoreutils-python \ libsemanage-python \ setools-libs-python \ setools-libs \ popt-devel \ libpcap-devel \ sqlite-devel \ libidn-devel \ libxml2-devel \ libacl-devel \ libsepol-devel \ libattr-devel \ keyutils-libs-devel \ cyrus-sasl-devel \ cups-devel \ bind-utils \ libxslt \ docbook-style-xsl \ openldap-devel
最新版のSambaをダウンロードする。この記事を書いたときは4.6.5だった。
$ wget http://www.samba.org/samba/ftp/samba-latest.tar.gz
解凍してインストールする。
$ tar zxf samba-latest.tar.gz $ cd samba-* # ./configure; make; make install
ファイアウォールの例外を登録する。
# firewall-cmd --permanent --add-port=42/tcp # firewall-cmd --permanent --add-port=53/tcp # firewall-cmd --permanent --add-port=53/udp # firewall-cmd --permanent --add-service=kerberos # firewall-cmd --permanent --add-service=ntp # firewall-cmd --permanent --add-port=135/tcp # firewall-cmd --permanent --add-port=137/udp # firewall-cmd --permanent --add-port=138/udp # firewall-cmd --permanent --add-port=139/tcp # firewall-cmd --permanent --add-service=ldap # firewall-cmd --permanent --add-port=389/tcp # firewall-cmd --permanent --add-port=389/udp # firewall-cmd --permanent --add-service=samba # firewall-cmd --permanent --add-port=464/tcp # firewall-cmd --permanent --add-port=464/udp # firewall-cmd --permanent --add-service=ldaps # firewall-cmd --permanent --add-port=1024-5000/tcp # firewall-cmd --permanent --add-port=49152-65535/tcp # firewall-cmd --permanent --add-port=5722/tcp # firewall-cmd --permanent --add-port=9389/tcp # firewall-cmd --reload
SELinuxの例外を登録する。
# setsebool -P samba_domain_controller true # setsebool -P samba_export_all_ro true # setsebool -P samba_export_all_rw true # setsebool -P samba_enable_home_dirs true
systemdにsambaサービスを登録する。
/etc/systemd/system/samba.service を下記内容で作成。
[Unit] Description= Samba 4 Active Directory After=syslog.target After=network.target [Service] Type=forking PIDFile=/usr/local/samba/var/run/samba.pid ExecStart=/usr/local/samba/sbin/samba [Install] WantedBy=multi-user.target
プライマリの設定
ドメインをセットアップする。
※–use-rfc2307 (Linux/BSD/macOSを認証する場合は必須)
※–interactive (セットアップを対話式で行う)
※–function-level=2008_R2 (機能レベルを2008_R2に)
# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
Realm: LOCAL.EXAMPLE.COM
Domain: EXAMPLE
下記のエラーが発生した場合は/etc/krb5.confの includedir /etc/krb5.conf.d/ をコメントアウトする。
ERROR(ldb): uncaught exception - operations error at ../source4/dsdb/samdb/ldb_modules/password_hash.c:2816
参照DNSを自身のIPアドレスにする。
dns-searchをRealmに変更する。
サービスを有効にして起動する。
# systemctl enable samba # systemctl start samba
セカンダリの設定
参照DNSのプライマリをプライマリドメコンのIPアドレスにする。
dns-searchをRealmに変更する。
プライマリでkrb5.conf内をコメントアウトしている場合は同じく /etc/krb5.conf の includedir /etc/krb5.conf.d/ をコメントアウトする。
ドメコンとしてドメイン参加させる。
# samba-tool domain join example DC -U administrator --realm=LOCAL.EXAMPLE.COM
/usr/local/samba/etc/smb.confに下記を追記する。
dns forwarder = [プライマリと同じforwarder] idmap_ldb:use rfc2307 = yes
参照DNSのセカンダリを本サーバーのIPアドレスにする。
サービスを有効にして起動する。
# systemctl enable samba # systemctl start samba
グループポリシーが自動では同期されないので、グループポリシーの変更後はセカンダリにて下記コマンドを実行する必要がある。
# rsync -a -u -e ssh root@test-dc1:/usr/local/samba/var/locks/sysvol/ /usr/local/samba/var/locks/sysvol/ # /usr/local/samba/bin/samba-tool ntacl sysvolreset
その他
Windowsの管理ツールではパスワードやアカウントロックのポリシーが変更できなかった。samba-toolで直接変更する。
# /usr/local/samba/bin/samba-tool domain passwordsettings set --complexity=on # /usr/local/samba/bin/samba-tool domain passwordsettings set --min-pwd-length=5 # /usr/local/samba/bin/samba-tool domain passwordsettings set --min-pwd-age=30 # /usr/local/samba/bin/samba-tool domain passwordsettings set --max-pwd-age=0 # /usr/local/samba/bin/samba-tool domain passwordsettings set --account-lockout-duration=60 # /usr/local/samba/bin/samba-tool domain passwordsettings set --account-lockout-threshold=3 # /usr/local/samba/bin/samba-tool domain passwordsettings set --reset-account-lockout-after=60 # /usr/local/samba/bin/samba-tool domain passwordsettings set --history-length=5
DNSの更新状況の確認。
No DNS updates needed ならOKらしい。
# /usr/local/samba/sbin/samba_dnsupdate --verbose
FSMOの確認。
# /usr/local/samba/bin/samba-tool fsmo show
FSMOの移行。転送先サーバーで下記コマンドを実行する。
# /usr/local/samba/bin/samba-tool fsmo transfer --role all
batファイルで変数を扱う
変数に値を入力するには SET を使い、値を使うには %変数名% で利用可能。
SET test=abcd ECHO %test%
→ 結果はabcd
変数の文字を抽出するには :~0,0 を使う。
ECHO %test:~0,2%
→ 結果はab
変数内の文字を置き換えするには :x=y を使う。
ECHO %test:cd=ef%
→ 結果はabef
応用してyyyyMMddHHmmssを取得する。
SET test=%date%%time:~0,8% SET test=%test:/=% SET test=%test: =0% SET test=%test::=% ECHO %test%
→ 結果は20161106100152