C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: ログオン/ログオフスクリプトの設定追加・変更


(過去ログ 17 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■6573 / inTopicNo.1)  ログオン/ログオフスクリプトの設定追加・変更
  
□投稿者/ kenji (1回)-(2007/08/18(Sat) 15:00:09)

分類:[C#] 

2007/08/18(Sat) 15:01:33 編集(投稿者)
2007/08/18(Sat) 15:01:24 編集(投稿者)

お世話になります。

C#で作成したプログラムから、ローカルグループポリシーにある「ログオンスクリプト」または
「ログオフスクリプト」にスクリプトを追加・削除したいと考えています。
(スクリプト自体はすでに存在しているものとして)

Windows上の操作だと
 ファイル名を指定して実行→「gpedit.msc」→ユーザ構成→Windowsの設定→スクリプト(ログオン/ログオフ)
  →ログオン→追加→スクリプトファイルの指定
というような流れになりますが、これと同等な事をC#上から行うような命令、関数や実装方法がありますでしょうか?

ネットで色々調べたのですが、グループポリシー自体の操作に関するTipsやサンプルがまったく見つけれなかったので
もしかしたらこの辺の操作はプログラム上からでは無理なのでは、と半ば諦めていますが・・・

もしご存知の方がいましたら、ぜひ教えてください。


# レジストリの
# HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\Scripts
# という場所に記録されるのは判明していますが、ローカルグループポリシー画面から設定すると、
# さらに「logon\0\0\」というキーが作成され、その中に情報が格納されます。
# しかし、
#  ・「logon\1\0\」となる場合は何なのか
#  ・すでに「logon\0\0\」が存在していた場合「logon\1\0\」とするだけでよいのか
# など、この「0」の作成根拠や仕様が不明なため、レジストリの直接編集では対処しきれないのではと考えています。


<追記>分類を間違えたため、そこだけ修正しました。
引用返信 編集キー/
■6577 / inTopicNo.2)  Re[1]: ログオン/ログオフスクリプトの設定追加・変更
□投稿者/ ちゃっぴ (57回)-(2007/08/18(Sat) 16:43:45)
ちゃっぴ さんの Web サイト
2007/08/19(Sun) 00:02:30 編集(投稿者)

残念ながら LGPO の内容(database) を編集する部分は undocumented ですね。

解析してゴリゴリやるのであればこの記事が参考になるでしょう。

グループ・ポリシーのしくみ
第3回 グループ・ポリシーの設定ファイル
4.GPT:\Machineと\Userフォルダ、Registry.polファイルhttp://www.atmarkit.co.jp/fwin2k/tutor/gpolicy03/gpolicy03_04.html
引用返信 編集キー/
■6582 / inTopicNo.3)  Re[2]: ログオン/ログオフスクリプトの設定追加・変更
□投稿者/ kenji (2回)-(2007/08/19(Sun) 12:59:36)
なるほど、やはり情報が公開されてないのですね。
力技で解析するしかないか・・・。

ありがとうございます。

(トピックス自体はもう少し様子見させてください。)
引用返信 編集キー/
■6583 / inTopicNo.4)  Re[3]: ログオン/ログオフスクリプトの設定追加・変更
□投稿者/ ちゃっぴ (58回)-(2007/08/19(Sun) 13:05:21)
ちゃっぴ さんの Web サイト
> なるほど、やはり情報が公開されてないのですね。
> 力技で解析するしかないか・・・。

Logon script にこだわらないのであれば、Startup とか
\SOFTWARE\Microsoft\Windows\CurrentVersion\Run (HKLM, HKCU どちらでも) とか
代替可能なものはありますね。
引用返信 編集キー/
■6586 / inTopicNo.5)  Re[4]: ログオン/ログオフスクリプトの設定追加・変更
□投稿者/ kenji (3回)-(2007/08/19(Sun) 15:32:15)
> Logon script にこだわらないのであれば、Startup とか
> \SOFTWARE\Microsoft\Windows\CurrentVersion\Run (HKLM, HKCU どちらでも) とか
> 代替可能なものはありますね。

おっしゃる通り、確かにログオン時の処理はレジストリなりスタートアップなりで代替手段があるのですが、
ログオフ時の処理はログオフスクリプト以外が思いつきません・・・

ずっと常駐させるかサービスにするかなどの代替手段はありますが、Windows終了時までプロセスが
残ってるかどうかの不安もありますし、確実さではログオフスクリプトにかなわないかなぁ、と思ってます。

引用返信 編集キー/
■6622 / inTopicNo.6)  Re[5]: ログオン/ログオフスクリプトの設定追加・変更
□投稿者/ ちゃっぴ (59回)-(2007/08/20(Mon) 23:12:54)
ちゃっぴ さんの Web サイト
> おっしゃる通り、確かにログオン時の処理はレジストリなりスタートアップなりで代替手段があるのですが、
> ログオフ時の処理はログオフスクリプト以外が思いつきません・・・
>
> ずっと常駐させるかサービスにするかなどの代替手段はありますが、Windows終了時までプロセスが
> 残ってるかどうかの不安もありますし、確実さではログオフスクリプトにかなわないかなぁ、と思ってます。

Logoff に関しても他の方法は思いつくのですが、Logoff script よりもよろしくない方法しか。。。

で、ちょっくら解析してみましたが、想像以上にいろいろ変更されてますねぇ。。。

Logon, Logoff script を設定するとまず下記 file に設定が反映されます。

"%WINDIR%\system32\GroupPolicy\User\Scripts\scripts.ini"

中身はこんな感じ。

[Logon]
0CmdLine=C:\hoge0.exe
0Parameters=
1CmdLine=C:\hoge1.exe
1Parameters=

"mmc.exe" で host される "gpedit.msc" は上記の file を読み込み画面に設定状況を表示します。
# 読み込み書き込みは "gptext.dll" を利用していると思われます。

ただ、設定を適用する際に書き込んでいるのは上記 file だけではなく、下記にも変更を行っています。

・ "%WINDIR%\system32\GroupPolicy\gpt.ini"
[General] section の Version が変更される

・ "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\$SID"
$SID には、設定を行った user の SIDが入ります。
上記対象配下の subkey がいろいろ変更されます。

特に重要と思われるのが下記です。
"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\$SID\GPO-List\$PolicyID\Version"
$PolicyID には 0 からの sequence number が入ります。
上記 registry path の値には、"gpt.ini" Version と一致している必要がありそうです。

・ "HKCU\Software\Policies\Microsoft\Windows\System\Scripts"
こちらは HKLM の方がちゃんと設定されていれば、logon 時に設定されるようなので設定しなくても大丈夫なようです。

・ "HKCU\Software\Microsoft\Windows\CurrentVersion\Group Policy\History\{42B5FAAE-6536-11d2-AE5A-0000F87571E3}\$PolicyID"
上記と同じでたぶん設定不要

・ "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions\{42B5FAAE-6536-11d2-AE5A-0000F87571E3}"
上記と同じでたぶん設定不要

・ "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\S-1-5-21-3668936787-1337530116-1038250850-500\Extension-List"
上記と同じでたぶん設定不要

ということで、完全に解析してというのはかなり厳しいかも。

"gptext.dll" あたりがくさいので、そちらの解析から攻める方法もあるかなぁ。。。
>
引用返信 編集キー/
■7000 / inTopicNo.7)  Re[6]: ログオン/ログオフスクリプトの設定追加・変更
□投稿者/ kenji (4回)-(2007/08/28(Tue) 16:03:44)
回答遅くなりすみません。詳しい調査ありがとうございます。
うーん、もうごりごり解析するしか手はなさそうですね・・・。
いただいた情報を元に、解析がてら色々試してみます。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -