2018年01月29日

"Windows10 Pro"でストアアプリの起動を制限する方法

皆様、初めまして。舘(タチ)と申します。
今回からこのブログの執筆に参加することになりました。

いきなりですが皆様、Windowsストアアプリは利用されていますか?

アプリストアから簡単にインストールできる点など、
パソコン自体に馴染みの薄いと言われるスマホ世代の方にも扱い易く
便利な代物ではないでしょうか。

その反面、業務用のパソコンに簡単にアプリをインストールできてしまうのは困り物ですね。
また、プリインストールされているアプリにも
XBOXやMicrosoft Solitaire Collection等のゲームアプリが混ざっており
できればアプリやアプリストア自体の使用は制限したいものです。

Microsoftもその辺はわかっているようで、Windows10には
アプリの起動可否を個別に制限する「AppLocker」という機能が搭載されています。
…ただし利用できるのは「Windows10 Enterprise」のみ。
私の利用している「Windows10 Pro」ではこの機能は使用できませんでした。

そこで今回は、「AppLocker」を使用せず
"Windows10 Pro"でもストアアプリの起動を制限する方法
をお伝えします!


■隠しファイルを表示

Windowsストアアプリのインストール先フォルダは隠しフォルダとなっており
初期設定のままでは表示されません。
まず、事前準備として隠しフォルダを表示できるように設定します。

エクスプローラーを開き上部のリボンから「表示」タブを開きます。
表示/非表示の項目に"隠しファイル"のチェックボックスがありますので
チェックが入った状態にします。

隠し.png


■アプリのインストール先を確認

ストアアプリのインストール先である
 C:\Program Files\WindowsApps を開きます。

ここで制限したいアプリのフォルダを探しましょう。
今回は例としてプリインストールされているゲームアプリ
「MicrosoftSolitaireCollection」を制限してみます。

ストアアプリは一つのフォルダでなく複数フォルダで構成されている場合が多いです。
同じアプリでも環境によってフォルダの数や名前が異なるのですが
私の環境だと、MicrosoftSolitaireCollectionは以下の4フォルダで構成されているようです。
solitaire.png


■アプリを「ソフトウェアの制限のポリシー」に追加

アプリのインストール先が確認できたところで
今回の本題である「ソフトウェアの制限のポリシー」の画面を開きましょう。

「Windowsキー」+「R」で「ファイル名を指定して実行」を開きます。
ここで"gpedit.msc"と入力後、OKをクリックしてください。

ファイル名指定.png

すると、ローカルグループポリシーエディターという画面が開くと思います。
コンピューターの構成>Windowsの設定>セキュリティの設定>ソフトウェア制御のポリシー
の順で設定項目を展開してください。

ソフトウェア制限-初期画面.png

ポリシーが何も登録されていない状態だと、上の図のような表示になります。
「ソフトウェアの制限のポリシー」を右クリックし表示されるメニューから
「新しいソフトウェアの制限のポリシー」をクリックします。

ソフトウェア制限-追加の規則.png

右枠に複数の項目が作られますので
「追加の規則」を右クリックしたあと「新しいパスの規則」をクリックし設定画面を開きます。

"パス(P)"欄に先ほど確認したMicrosoftSolitaireCollectionのフォルダパスを入力します。
MicrosoftSolitaireCollectionは4個のフォルダで構成されていましたが
アプリ毎に何個ものフォルダパスを入力するのは大変ですね。
また、バージョンアップ等でフォルダ名が変わってしまう可能性があり、そのたびに設定しなおすのは現実的ではありません。

「ソフトウェアの制限のポリシー」ではワイルドカード(*)を用いたフォルダ指定ができるので
実際に指定する際は
C:\Program Files\WindowsApps\Microsoft.MicrosoftSolitaireCollection*
といった形にするのがよいでしょう。

新しいパスの規則.png

セキュリティレベル(S)欄は許可しないのまま。
説明(D)欄はアプリ名などわかりやすい物を入力し、最後にOKをクリックすると
追加の規則が登録され、リスト上にも表示されます。

ソフトウェア制限-追加の規則追加後.png


■ポリシーの検証

追加の規則を登録できたら、早速MicrosoftSolitaireCollectionの起動を試して見ましょう。
以下のような文言が表示され起動できなければ成功です!

ブロック.png

ここまでが「ソフトウェアの制限のポリシー」を用いたストアアプリの制限方法です。
「MicrosoftSolitaireCollection」を皆様が制限したいアプリに置き換えて設定してください。

例えば…
・アプリストアの起動を制限し新規アプリのインストールをできなくしたい
⇒「C:¥Program Files¥WindowsApps¥Microsoft.WindowsStore*」を指定

・すべてのストアアプリの起動を制限したい
「C:¥Program Files¥WindowsApps*」を指定

社内のパソコンでストアアプリが好き勝手に利用されている…
それだけでもパソコンやその中のデータが危険に晒される可能性がありますよね。
Windows10Proを利用しておりストアアプリは野放し状態になっているという管理者の方がおられましたら是非、今回ご紹介した方法をお試しください!

ただ、ポリシーの設定によっては本来必要なアプリまで起動できなくなってしまうので
設定反映の前に影響範囲をよくご確認くださいね。

今後も情報端末管理に役立つ機能・設定があれば
共有させていただきますのでよろしくお願いします。
posted by 舘 at 14:56| Comment(0) | Windows・Office | このブログの読者になる | 更新情報をチェックする

2018年01月15日

PowerShellによるIE操作

あけましておめでとうございます。今年からブログ更新メンバになりました滝澤です。

最近のことですが
IEの操作を自動化したい!!と思うことがありました。

私の場合は、Webの管理画面のみのシステムに対して定型的なアカウント作成を実施していました。これがかなりメンドクサイ・・・。


ということで

今日は、PowerShellによるIE操作について書きたいと思います。


今回作成したスクリプトは、以下の動作をします。
 @管理画面を開く
 AID・PASSを自動入力してログイン
 B「ユーザ管理」のリンクをクリック


ポイント1

画面遷移中でオブジェクト取得に失敗することがあるため、画面遷移後は基本スリープ処理を実施。

start-sleep -milliseconds 1000

While($ie.Busy){start-sleep -milliseconds 100}


ポイント2

「id」や「name」が指定されていないsubmitボタンや、画面上に複数あるリンクの指定方法

※<input type="submit" value="ログイン" />  ←こんなの

$btn=$doc.getElementsByTagName("input") |Where-Object {$_.type -eq "submit"}


※<a href="javascript:void(0);" onclick="hogehoge">ユーザ管理</a>  ←こんなの

$btn=$doc.getElementsByTagName("a") |Where-Object {$_.outerText -eq "ユーザ管理"}


ポイント3

今回の例では使用していませんが、フレームが使用されている場合の指定方法

$iframe = $ie.Document.frames.item([ref]1).document




以下にスクリプトの全文を記載します。※青字は環境に合わせて修正してください。


# ログイン情報
$userName="hogehoge"
$userPass="password"

##################################################
### 関数定義
##################################################
function U-Login() {
    # トラップ
    try{
        $script:ie=new-object -com InternetExplorer.Application
        $ie.visible=$true
        $ie.navigate("http://hogehoge/pss/login.html")
       
        # 待ち
        While($ie.Busy){start-sleep -milliseconds 100}
        $script:doc=$ie.document
        if ($doc.url -eq "http:// hogehoge/pss/login.html") {
            Write-Debug "INFO: ログイン実行"
            $dom_userNAME=$doc.getElementById("username")
            $dom_userNAME.value=$userName
            $dom_userPASS=$doc.getElementById("password")
            $dom_userPASS.value=$userPass
            $btn=$doc.getElementsByTagName("input") |Where-Object {$_.type -eq "submit"}
            $btn.click()
            # 待ち
            While($ie.Busy){start-sleep -milliseconds 100}
            Write-Debug "INFO: ログイン完了"
        }
    }catch [Exception]{
        $Error
        Read-Host "続けるにはENTERキーを押してください"
        exit
    }
}
function U-View() {
    # トラップ
    try{
        start-sleep -milliseconds 1000
        Write-Debug "INFO: ユーザ管理 移動実行"
        $btn=$doc.getElementsByTagName("a") |Where-Object {$_.outerText -eq "ユーザ管理"}
        $btn.click()
        # 待ち
        While($ie.Busy){start-sleep -milliseconds 100}
        Write-Debug "INFO: ユーザ管理 移動完了"
    }catch [Exception]{
        $Error
        Read-Host "続けるにはENTERキーを押してください"
        exit
    }
}
##################################################
### 処理実行
##################################################
U-Login
U-View
Read-Host "続けるにはENTERキーを押してください"




如何でしょうか?
今回作成したスクリプトはログイン後にリンクをクリックするだけですが、
処理を追加することでチェックボックスやセレクトボックスの選択も可能となります。

やってみるとPowerShellも面白いものですので是非とも触ってみてください。

以上、それでは今日はこのへんで失礼します。

posted by 滝澤 at 09:00| Comment(0) | スクリプト・バッチ | このブログの読者になる | 更新情報をチェックする