| Works
「Screensaver Operations」の設定をグループポリシーで管理する
今回もメインテーマはグループポリシー管理用テンプレート(ADMXファイル)のお勉強です。
かなり昔に「Screensaver Operations」について言及しており、その時にADMファイルも作っていました。
その後も少しずつ手直ししながら使っていましたが、あれから時は流れて、主目的だったVMware Horizonにも無操作時に切断する機能が実装されるようになりました。
一方で、Screensaver Operationsも.NET Framework 4.1以上を使うv2.0がリリースされていました。
そんなわけで、個人的にはScreensaver Operationsの利用機会は減るかもしれませんが、v2.0対応も含めてADMXファイルを作ってみました。
過去のADMファイルの説明はScreensaver OperationsのREADMEファイルをコピペしていたのですが、今回はちゃんと日本語にしています。ちょっと変なところがあるかもしれませんが😅
なので、ADMLファイルの方は"ja-JP"の下に配置してください。
ScrOps.admx
<?xml version="1.0" encoding="utf-8"?>
<policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinition"
revision="1.1" schemaVersion="1.0" >
<policyNamespaces>
<target prefix="ScreensaverOperations" namespace="Workstg.Policies.ScreensaverOperations" />
<using prefix="windows" namespace="Microsoft.Policies.Windows" />
</policyNamespaces>
<resources minRequiredRevision="1.0" />
<categories>
<category name="String_Cat_ScrOps" displayName="$(string.String_Cat_ScrOps)" explainText="$(string.String_Cat_ScrOps)" />
</categories>
<policies>
<policy name="String_LocalMachineOverride" class="Machine" displayName="$(string.String_LocalMachineOverride)" explainText="$(string.String_LocalMachineOverride_Help)"
key="SOFTWARE\GrimAdmin.com\Screensaver Operations" valueName="LocalMachineOverride">
<parentCategory ref="String_Cat_ScrOps" />
<supportedOn ref="windows:SUPPORTED_Windows7" />
<enabledValue>
<decimal value="1" />
</enabledValue>
<disabledValue>
<decimal value="0" />
</disabledValue>
</policy>
<policy name="String_EWX_ExitFlag" class="Both" displayName="$(string.String_EWX_ExitFlag)" explainText="$(string.String_EWX_ExitFlag_Help)"
presentation="$(presentation.Presentation_EWX_ExitFlag_List)" key="SOFTWARE\GrimAdmin.com\Screensaver Operations">
<parentCategory ref="String_Cat_ScrOps" />
<supportedOn ref="windows:SUPPORTED_Windows7" />
<elements>
<enum id="Presentation_EWX_ExitFlag_List_Item" valueName="EWX_ExitFlag" required="true">
<item displayName="$(string.String_EWX_ExitFlag_0)">
<value>
<decimal value="0" />
</value>
</item>
<item displayName="$(string.String_EWX_ExitFlag_1)">
<value>
<decimal value="4" />
</value>
</item>
<item displayName="$(string.String_EWX_ExitFlag_2)">
<value>
<decimal value="1" />
</value>
</item>
<item displayName="$(string.String_EWX_ExitFlag_3)">
<value>
<decimal value="5" />
</value>
</item>
<item displayName="$(string.String_EWX_ExitFlag_4)">
<value>
<decimal value="2" />
</value>
</item>
<item displayName="$(string.String_EWX_ExitFlag_5)">
<value>
<decimal value="6" />
</value>
</item>
<item displayName="$(string.String_EWX_ExitFlag_6)">
<value>
<decimal value="8" />
</value>
</item>
<item displayName="$(string.String_EWX_ExitFlag_7)">
<value>
<decimal value="12" />
</value>
</item>
<item displayName="$(string.String_EWX_ExitFlag_8)">
<value>
<decimal value="90" />
</value>
</item>
<item displayName="$(string.String_EWX_ExitFlag_9)">
<value>
<decimal value="91" />
</value>
</item>
<item displayName="$(string.String_EWX_ExitFlag_10)">
<value>
<decimal value="94" />
</value>
</item>
<item displayName="$(string.String_EWX_ExitFlag_11)">
<value>
<decimal value="95" />
</value>
</item>
<item displayName="$(string.String_EWX_ExitFlag_12)">
<value>
<decimal value="99" />
</value>
</item>
</enum>
</elements>
</policy>
<policy name="String_BackgroundOpacity" class="Both" displayName="$(string.String_BackgroundOpacity)" explainText="$(string.String_BackgroundOpacity_Help)"
presentation="$(presentation.Presentation_BackgroundOpacity)" key="SOFTWARE\GrimAdmin.com\Screensaver Operations">
<parentCategory ref="String_Cat_ScrOps" />
<supportedOn ref="windows:SUPPORTED_Windows7" />
<elements>
<decimal id="Decimal_BackgroundOpacity" valueName="BackgroundOpacity" minValue="0" maxValue="100" />
</elements>
</policy>
<policy name="String_CancelOnMouseClick" class="Both" displayName="$(string.String_CancelOnMouseClick)" explainText="$(string.String_CancelOnMouseClick_Help)"
key="SOFTWARE\GrimAdmin.com\Screensaver Operations" valueName="CancelOnMouseClick">
<parentCategory ref="String_Cat_ScrOps" />
<supportedOn ref="windows:SUPPORTED_Windows7" />
<enabledValue>
<decimal value="1" />
</enabledValue>
<disabledValue>
<decimal value="0" />
</disabledValue>
</policy>
<policy name="String_CancelOnMouseMove" class="Both" displayName="$(string.String_CancelOnMouseMove)" explainText="$(string.String_CancelOnMouseMove_Help)"
key="SOFTWARE\GrimAdmin.com\Screensaver Operations" valueName="CancelOnMouseClick">
<parentCategory ref="String_Cat_ScrOps" />
<supportedOn ref="windows:SUPPORTED_Windows7" />
<enabledValue>
<decimal value="1" />
</enabledValue>
<disabledValue>
<decimal value="0" />
</disabledValue>
</policy>
<policy name="String_DelayInSeconds" class="Both" displayName="$(string.String_DelayInSeconds)" explainText="$(string.String_DelayInSeconds_Help)"
presentation="$(presentation.Presentation_DelayInSeconds)" key="SOFTWARE\GrimAdmin.com\Screensaver Operations">
<parentCategory ref="String_Cat_ScrOps" />
<supportedOn ref="windows:SUPPORTED_Windows7" />
<elements>
<decimal id="Decimal_DelayInSeconds" valueName="DelayInSeconds" minValue="0" maxValue="2147483647" />
</elements>
</policy>
<policy name="String_DisableSpecialKeys" class="Both" displayName="$(string.String_DisableSpecialKeys)" explainText="$(string.String_DisableSpecialKeys_Help)"
key="SOFTWARE\GrimAdmin.com\Screensaver Operations" valueName="DisableSpecialKeys">
<parentCategory ref="String_Cat_ScrOps" />
<supportedOn ref="windows:SUPPORTED_Windows7" />
<enabledValue>
<decimal value="1" />
</enabledValue>
<disabledValue>
<decimal value="0" />
</disabledValue>
</policy>
<policy name="String_EasterEgg" class="Both" displayName="$(string.String_EasterEgg)" explainText="$(string.String_EasterEgg_Help)"
presentation="$(presentation.Presentation_EasterEgg)" key="SOFTWARE\GrimAdmin.com\Screensaver Operations">
<parentCategory ref="String_Cat_ScrOps" />
<supportedOn ref="windows:SUPPORTED_Windows7" />
<elements>
<text id="TextBox_EasterEgg" valueName="EasterEgg" required="false" maxLength="12" />
</elements>
</policy>
<policy name="String_HideActionButton" class="Both" displayName="$(string.String_HideActionButton)" explainText="$(string.String_HideActionButton_Help)"
key="SOFTWARE\GrimAdmin.com\Screensaver Operations" valueName="HideActionButton">
<parentCategory ref="String_Cat_ScrOps" />
<supportedOn ref="windows:SUPPORTED_Windows7" />
<enabledValue>
<decimal value="1" />
</enabledValue>
<disabledValue>
<decimal value="0" />
</disabledValue>
</policy>
<policy name="String_RunProcessEnabled" class="Both" displayName="$(string.String_RunProcessEnabled)" explainText="$(string.String_RunProcessEnabled_Help)"
key="SOFTWARE\GrimAdmin.com\Screensaver Operations" valueName="RunProcessEnabled">
<parentCategory ref="String_Cat_ScrOps" />
<supportedOn ref="windows:SUPPORTED_Windows7" />
<enabledValue>
<decimal value="1" />
</enabledValue>
<disabledValue>
<decimal value="0" />
</disabledValue>
</policy>
<policy name="String_RunProcessPath" class="Both" displayName="$(string.String_RunProcessPath)" explainText="$(string.String_RunProcessPath_Help)"
presentation="$(presentation.Presentation_RunProcessPath)" key="SOFTWARE\GrimAdmin.com\Screensaver Operations">
<parentCategory ref="String_Cat_ScrOps" />
<supportedOn ref="windows:SUPPORTED_Windows7" />
<elements>
<text id="TextBox_RunProcessPath" valueName="RunProcessPath" required="true" maxLength="1023" />
<text id="TextBox_RunProcessArguments" valueName="RunProcessArguments" required="false" maxLength="1023" />
</elements>
</policy>
<policy name="String_MessageFontSize" class="Both" displayName="$(string.String_MessageFontSize)" explainText="$(string.String_MessageFontSize_Help)"
presentation="$(presentation.Presentation_MessageFontSize)" key="SOFTWARE\GrimAdmin.com\Screensaver Operations">
<parentCategory ref="String_Cat_ScrOps" />
<supportedOn ref="windows:SUPPORTED_Windows7" />
<elements>
<decimal id="Decimal_MessageFontSize" valueName="MessageFontSize" minValue="0" maxValue="1638" />
</elements>
</policy>
<policy name="String_CustomMessage" class="Both" displayName="$(string.String_CustomMessage)" explainText="$(string.String_CustomMessage_Help)"
presentation="$(presentation.Presentation_CustomMessage)" key="SOFTWARE\GrimAdmin.com\Screensaver Operations">
<parentCategory ref="String_Cat_ScrOps" />
<supportedOn ref="windows:SUPPORTED_Windows7" />
<elements>
<text id="TextBox_CustomTitleText" valueName="CustomTitleText" required="false" maxLength="255" />
<text id="TextBox_CustomMessage" valueName="CustomMessage" required="false" maxLength="1023" />
</elements>
</policy>
<policy name="String_GradientColor" class="Both" displayName="$(string.String_GradientColor)" explainText="$(string.String_GradientColor_Help)"
presentation="$(presentation.Presentation_GradientColor)" key="SOFTWARE\GrimAdmin.com\Screensaver Operations">
<parentCategory ref="String_Cat_ScrOps" />
<supportedOn ref="windows:SUPPORTED_Windows7" />
<elements>
<text id="TextBox_GradientColorLeft" valueName="GradientColorLeft" required="true" maxLength="8" />
<text id="TextBox_GradientColorRight" valueName="GradientColorRight" required="true" maxLength="8" />
</elements>
</policy>
</policies>
</policyDefinitions>
ScrOps.adml
<?xml version="1.0" encoding="utf-8"?>
<policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinition"
revision="1.0" schemaVersion="1.0">
<displayName >ここに表示名を入力</displayName>
<description >ADMX ファイルの説明を入力</description>
<resources>
<stringTable>
<string id="String_Cat_ScrOps">Screensaver Operations</string>
<string id="String_LocalMachineOverride">マシンポリシーの優先</string>
<string id="String_LocalMachineOverride_Help">コンピュータの設定 (HKLM) をユーザーの設定 (HKCU) よりも優先させます。既定値は無効です。</string>
<string id="String_EWX_ExitFlag">Windows終了時の動作</string>
<string id="String_EWX_ExitFlag_Help">Screensaver OperationsがWindowsを終了するときの動作を指定します。既定値はログオフです。</string>
<string id="String_EWX_ExitFlag_0">ログオフ</string>
<string id="String_EWX_ExitFlag_1">強制ログオフ</string>
<string id="String_EWX_ExitFlag_2">シャットダウン</string>
<string id="String_EWX_ExitFlag_3">強制シャットダウン</string>
<string id="String_EWX_ExitFlag_4">再起動</string>
<string id="String_EWX_ExitFlag_5">強制再起動</string>
<string id="String_EWX_ExitFlag_6">パワーオフ</string>
<string id="String_EWX_ExitFlag_7">強制パワーオフ</string>
<string id="String_EWX_ExitFlag_8">スリープ</string>
<string id="String_EWX_ExitFlag_9">休止</string>
<string id="String_EWX_ExitFlag_10">強制スリープ</string>
<string id="String_EWX_ExitFlag_11">強制休止</string>
<string id="String_EWX_ExitFlag_12">何もしない</string>
<string id="String_BackgroundOpacity">背景の濃度</string>
<string id="String_BackgroundOpacity_Help">スクリーンセーバーが起動したときの背景濃度を設定します。既定値は75です。
0を入力すると透明になり、バックグラウンドのプログラムを操作できます。1以上を入力すると、バックグラウンドの操作はできなくなります。</string>
<string id="String_CancelOnMouseClick">マウスクリックによるキャンセル</string>
<string id="String_CancelOnMouseClick_Help">マウスクリックでスクリーンセーバーをキャンセルする機能を有効にします。既定値は無効です。
(本機能は試験実装です)</string>
<string id="String_CancelOnMouseMove">マウス移動によるキャンセル</string>
<string id="String_CancelOnMouseMove_Help">マウス移動でスクリーンセーバーをキャンセルする機能を有効にします。既定値は無効です。
(本機能は試験実装です)</string>
<string id="String_DelayInSeconds">指定動作までの時間</string>
<string id="String_DelayInSeconds_Help">スクリーンセーバーが起動してから指定した動作を実行するまでの時間を設定します。既定値は60秒です。</string>
<string id="String_DisableSpecialKeys">特殊キーの無効化</string>
<string id="String_DisableSpecialKeys_Help">この設定を有効にすると、スクリーンセーバーが起動したときに[Windows]、[Alt]+[Tab]、[Alt]+[Esc]、[Ctrl]+[Esc]、[Ctrl]+[Shift]+[Esc]等の特殊なキー操作を無効にします。既定値は有効です。
※[Ctrl]+[Alt]+[Del]と[Alt]+[F4]は無効になりません。</string>
<string id="String_EasterEgg">イースターエッグ</string>
<string id="String_EasterEgg_Help">指定した文字列によってイースターエッグが動作します。以下の文字列が使用可能です。
未入力: 1月1日に雪が表示されます。(既定値)
snow: 常に雪が表示されます。
none: イースターエッグは動作しません。</string>
<string id="String_HideActionButton">アクションボタンの非表示</string>
<string id="String_HideActionButton_Help">スクリーンセーバーのダイアログウインドウからアクションボタンを非表示にします。既定値は無効です。</string>
<string id="String_RunProcessEnabled">プログラムの実行</string>
<string id="String_RunProcessEnabled_Help">この設定を有効にした場合、スクリーンセーバーが起動したときに「Windows終了時の動作」は無視され、指定プログラムを実行します。既定値は無効です。</string>
<string id="String_RunProcessPath">実行プログラムの指定</string>
<string id="String_RunProcessPath_Help">「プログラムの実行」を有効にした場合、ここで指定したファイルが実行されます。ファイルは完全パスで入力してください。</string>
<string id="String_MessageFontSize">メッセージのフォントサイズ</string>
<string id="String_MessageFontSize_Help">スクリーンセーバーが起動したときに表示されるメッセージのフォントサイズを設定します。既定値は9です。</string>
<string id="String_CustomMessage">通知メッセージ</string>
<string id="String_CustomMessage_Help">スクリーンセーバーが起動したときに表示されるタイトルとメッセージを設定します。未入力の場合は既定のメッセージが表示されます。タイトルやメッセージを表示したくないときはスペースを入力してください。
メッセージには以下の変数が利用できます。
%time_remaining% - 残り時間を秒単位で表示します。
%time_elapsed% - 経過時間を秒単位で表示します。
%user_name% - ログオンしているユーザー名を表示します。
%user_domain_name% - ログオンしているユーザーのドメインを表示します。
%machine_name% - コンピュータ名を表示します。</string>
<string id="String_GradientColor">バナーテキストの背景色</string>
<string id="String_GradientColor_Help">バナーテキストの背景色を設定します。左右の色を同一にした場合は単色となり、異なる場合はグラデーションになります。
色は#で始まる16進数カラーコード (例えば"#054E85") で入力してください。</string>
</stringTable>
<presentationTable>
<presentation id="Presentation_EWX_ExitFlag_List">
<dropdownList refId="Presentation_EWX_ExitFlag_List_Item" defaultItem="0" noSort="true">終了時の動作:</dropdownList>
</presentation>
<presentation id="Presentation_BackgroundOpacity">
<decimalTextBox refId="Decimal_BackgroundOpacity" defaultValue="75" spinStep="1">濃度 (%):</decimalTextBox>
</presentation>
<presentation id="Presentation_DelayInSeconds">
<decimalTextBox refId="Decimal_DelayInSeconds" defaultValue="60" spinStep="1">待機時間 (秒):</decimalTextBox>
</presentation>
<presentation id="Presentation_EasterEgg">
<textBox refId="TextBox_EasterEgg">
<label>文字列:</label>
<defaultValue></defaultValue>
</textBox>
</presentation>
<presentation id="Presentation_RunProcessPath">
<textBox refId="TextBox_RunProcessPath">
<label>実行ファイル:</label>
<defaultValue></defaultValue>
</textBox>
<textBox refId="TextBox_RunProcessArguments">
<label>引数:</label>
<defaultValue></defaultValue>
</textBox>
</presentation>
<presentation id="Presentation_MessageFontSize">
<decimalTextBox refId="Decimal_MessageFontSize" defaultValue="9" spinStep="1">フォントサイズ:</decimalTextBox>
</presentation>
<presentation id="Presentation_CustomMessage">
<textBox refId="TextBox_CustomTitleText">
<label>タイトル:</label>
<defaultValue></defaultValue>
</textBox>
<textBox refId="TextBox_CustomMessage">
<label>メッセージ:</label>
<defaultValue></defaultValue>
</textBox>
</presentation>
<presentation id="Presentation_GradientColor">
<textBox refId="TextBox_GradientColorLeft">
<label>左側の色:</label>
<defaultValue></defaultValue>
</textBox>
<textBox refId="TextBox_GradientColorRight">
<label>右側の色:</label>
<defaultValue></defaultValue>
</textBox>
</presentation>
</presentationTable>
</resources>
</policyDefinitionResources>
一通りレジストリが変更されてScreensaver Operationsの設定が変更されるのは確認したので大丈夫だと思うけど、動作そのものは全て確認したわけではないです。
実際に使う機会がやってきたときにはちゃんとテストしなければ。