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

LibreOfficeのVBでディレクトリ選択ダイアログを表示する

Dim folderPicker As Object
Dim isAccept As Integer
Dim folders()
Dim folderUrl as String
Dim folderName as String
folderPicker = createUnoService("com.sun.star.ui.dialogs.FolderPicker")
folderPicker.setTitle ("ディレクトリの選択")
folderPicker.setDescription("ディレクトリを選択してください。")
folderPicker.setDisplayDirectory("C:\Users\Test\Desktop")
isAccept = folderPicker.execute()
If isAccept = 1 Then
    folders() = folderPicker.getDirectory()
    folderUrl = folders(0)
    folderName = ConvertFromURL(folderUrl)
    MsgBox(folderName)
Else
    folderPicker.cancel()
End If

ディスクの管理で削除できない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以外の方法で変更する

デフォルトのユーザープロファイルに対するレジストリ設定

  1. regeditを起動しHKUにフォーカスして「ファイル」→「ハイブの読み込み」から「C:\Users\Default\NTUSER.DAT」を指定し、名前をDefaultProfileにする。
  2. そのままregeditでレジストリを変更するか「reg add “HKU\DefaultProfile\SOFTWARE…」のようにコマンドで変更する。
  3. 再度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