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

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

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

Re[6]: C# でプレースバーのレジストリ変更する方法


(過去ログ 131 を表示中)

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

■77470 / inTopicNo.1)  C# でプレースバーのレジストリ変更する方法
  
□投稿者/ たてばと (1回)-(2015/10/22(Thu) 18:23:21)

分類:[C#] 

こんにちは
ご存じの方がおられたらご教示おねがいします。

いわゆる、ファイル選択ダイアログを開いた時に左ペインに表示される
プレースバーのカスタム表示はレジストリの以下を操作する必要がありますが

HKEY_CURRENT_USER → Software → Microsoft → Windows → CurrentVersion → Policies → Comdlg32 → PlacesBar

C#で作成したアプリを管理者権限で起動しないと変更処理の箇所で例外が起きて変更できません
ところが、パソコンによっては管理者権限で起動しなくても変更できる端末があります。
どちらも Administratorでログインしています。
レジストリのアクセス権限?ポリシー?いろいろ調べても違いがなくわかりませんでした。

どうもウィルスバスターが入っているパソコンではレジストリが変更できるような感じなのですが
ウィルスバスターは会社のシス管が入れており勝手にアンイストールできないので
それが原因とは断定できないのですが、そんなことってあるんでしょうか?
管理者権限でなくても上記のレジストリを操作する方法はないでしょうか?

今時、プレースバーを使う時代でもないのですが・・・
よろしくお願いします。

引用返信 編集キー/
■77473 / inTopicNo.2)  Re[1]: C# でプレースバーのレジストリ変更する方法
□投稿者/ Azulean (529回)-(2015/10/22(Thu) 22:32:20)
2015/10/22(Thu) 22:33:43 編集(投稿者)

No77470 (たてばと さん) に返信
> C#で作成したアプリを管理者権限で起動しないと変更処理の箇所で例外が起きて変更できません
> ところが、パソコンによっては管理者権限で起動しなくても変更できる端末があります。
> どちらも Administratorでログインしています。

Administrator は常に「管理者権限」だからです。
ウイルスバスターの話は関係ありません。


> 管理者権限でなくても上記のレジストリを操作する方法はないでしょうか?

デフォルトのアクセス許可が書き込み不可なので、管理者権限など、強い権限で実行する以外の手立てはありません。
引用返信 編集キー/
■77475 / inTopicNo.3)  Re[2]: C# でプレースバーのレジストリ変更する方法
□投稿者/ ?????? (1回)-(2015/10/23(Fri) 11:07:00)
No77473 (Azulean さん) に返信
> 2015/10/22(Thu) 22:33:43 編集(投稿者)
>
> Administrator は常に「管理者権限」だからです。
> ウイルスバスターの話は関係ありません。

Azulean さん
コメントありがとうございます。

Windows では、コンピュータに管理者アカウントでログインしている場合でも
コンピュータを使用するユーザ全員に影響する変更がユーザによって行われるのを
防止するため、通常の操作は標準アカウントと同じ権限で実行されていますので

たとえ、Administratorであっても特定のアプリを管理者権限で起動するには実行ファイルで
右クリックして管理者権限で実行を選ぶか、実行ファイルのプロパティで常に管理者権限で
実行するよう設定しないかぎりレジストリ変更の処理はブロックされると思うのです

しかし、特定のパソコンは管理者権限でアプリを実行しなくてもプレースバーの
変更が正常に処理されてレジストリを見ても変更されていることが確認できます。

それで、管理者権限での実行でなくても上記のレジストリを操作する方法が
存在するのかと思って質問させていただきました。


> デフォルトのアクセス許可が書き込み不可なので、管理者権限など、強い権限で実行する以外の手立てはありません。

わたしもそう思っていたのですが上記の通りアプリを管理者権限で起動しなくてもレジストリを変更できる
パソコンがあるので何か方法があるのだろうとは思うのですが違いはウィルスバスターの有無だったので
それかなと思った次第です。

例えば、企業向けウィルスバスターが遠隔でレジストリを変更できるようにするためどこかを触っているのが
影響しているのかな?と漠然と考えたのですが、調べても手がかりがない状態です。
引用返信 編集キー/
■77476 / inTopicNo.4)  Re[3]: C# でプレースバーのレジストリ変更する方法
□投稿者/ 魔界の仮面弁士 (541回)-(2015/10/23(Fri) 11:21:22)
No77475 (?????? さん) に返信

ブラウザによっては、Cookie 内の投稿者情報が化けて表示されるようですね。
(恐らく、この掲示板で使っている Child Tree が、文字化け対策前の物なのでしょう)


> 例えば、企業向けウィルスバスターが遠隔でレジストリを変更できるようにするためどこかを触っているのが
> 影響しているのかな?と漠然と考えたのですが、調べても手がかりがない状態です。

まずは調査のため、変更可能な PC と変更できた PC それぞれで
レジストリエディタを起動し、該当キーを右クリックして
[アクセス許可]を比較してみては如何でしょう。
引用返信 編集キー/
■77477 / inTopicNo.5)  Re[4]: C# でプレースバーのレジストリ変更する方法
□投稿者/ たてばと (2回)-(2015/10/23(Fri) 11:35:08)
No77476 (魔界の仮面弁士 さん) に返信
> ■No77475 (?????? さん) に返信
>
> ブラウザによっては、Cookie 内の投稿者情報が化けて表示されるようですね。
> (恐らく、この掲示板で使っている Child Tree が、文字化け対策前の物なのでしょう)

ほんとですね、返信画面でも既に名前欄が ?????? になっていました。

> まずは調査のため、変更可能な PC と変更できた PC それぞれで
> レジストリエディタを起動し、該当キーを右クリックして
> [アクセス許可]を比較してみては如何でしょう。

魔界の仮面弁士さん
コメントありがとうございます。

まずはそこを疑ったのですが両者に違いはありませんでした。
また、共に UACはオンなので変更できる方も UACの警告が出てきても良さそうなもの
なのですがそれも表示されず普通に変更できています。
引用返信 編集キー/
■77478 / inTopicNo.6)  Re[5]: C# でプレースバーのレジストリ変更する方法
□投稿者/ Azulean (530回)-(2015/10/23(Fri) 12:14:25)
Administrator で昇格確認が出るかどうかは、ポリシーによるようです。そちらは確認されていますか?

https://technet.microsoft.com/ja-jp/library/cc772207
引用返信 編集キー/
■77479 / inTopicNo.7)  Re[6]: C# でプレースバーのレジストリ変更する方法
□投稿者/ Azulean (531回)-(2015/10/23(Fri) 12:17:17)
いずれにせよ、昇格しないとできないことは、昇格するか、高い権限で動くサービスを用意して委譲するか、インストーラーなどで予めアクセス許可を緩めるか、UACを切るかぐらいです。
魔法の方法はありません。
引用返信 編集キー/
■77480 / inTopicNo.8)  Re[7]: C# でプレースバーのレジストリ変更する方法
□投稿者/ Azulean (532回)-(2015/10/23(Fri) 12:27:36)
連投すみません。

Administrator で使っている環境でレジストリエディタを起動する際、昇格の確認が出ないなら、全プロセスが管理者権限で動いている可能性が高いでしょう。
UAC のデフォルト設定であれば、レジストリエディタは昇格可能なアカウントでは昇格確認を求めるので。
引用返信 編集キー/
■77481 / inTopicNo.9)  Re[8]: C# でプレースバーのレジストリ変更する方法
□投稿者/ たてばと (3回)-(2015/10/23(Fri) 13:20:27)
No77480 (Azulean さん) に返信

Azuleanさん
お忙しい中、いろいろアドバイスありがとうございます。
もう少し両方のパソコンの設定上の違いを丹念に調べてみます。
引用返信 編集キー/
■77482 / inTopicNo.10)  Re[1]: C# でプレースバーのレジストリ変更する方法
□投稿者/ とっちゃん (304回)-(2015/10/23(Fri) 14:17:15)
No77470 (たてばと さん) に返信

レジストリアクセスは、

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Comdlg32\PlacesBar

で、あってますか?
私の環境(Win10なので違うと思いますが)には、

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies

までしかありませんでした。

アクセス権の問題が出ていたので、念のため
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Policies
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies
もチェックしてみましたがどちらも Comdlg32 はありませんでした。


もし、HKEY_CURRENT_USER が対象なら、管理者権限の問題ではなく、該当キーのアクセス権がおかしくなっているか
キーが存在していないため、Open メソッドが失敗している(キーがないとオープンはできません)可能性が高いものと思います。

環境によってうまくいく環境といかない環境があるという点もそのあたりに注意する必要があると
考える素因となります。


プログラムでアクセスしていれば、例外が発生しているはずです。
まずは、その例外がどういうものかをきちんと確認してみてはいかがでしょうか?

引用返信 編集キー/
■77484 / inTopicNo.11)  Re[2]: C# でプレースバーのレジストリ変更する方法
□投稿者/ たてばと (4回)-(2015/10/23(Fri) 16:06:55)
No77482 (とっちゃん さん) に返信

コメントありがとうございます。

> HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Comdlg32\PlacesBar
>
> で、あってますか?
> 私の環境(Win10なので違うと思いますが)には、

環境を書いてなかったですね、すみません Widnows 7 です。
VS2012 .NET 4.0 の環境です。

> プログラムでアクセスしていれば、例外が発生しているはずです。
> まずは、その例外がどういうものかをきちんと確認してみてはいかがでしょうか?

Visual Studioで追うとレジストリを変更するメソッドの中の
レジストリ操作処理で例外が発生し、キャッチで掴まれ
何もせずそのまま抜けてきます。

管理者権限で実行すると例外は起きず、変更もできるのでレジストリの位置は間違っていないです。

引用返信 編集キー/
■77489 / inTopicNo.12)  Re[3]: C# でプレースバーのレジストリ変更する方法
□投稿者/ とっちゃん (305回)-(2015/10/23(Fri) 17:20:00)
No77484 (たてばと さん) に返信

>>プログラムでアクセスしていれば、例外が発生しているはずです。
>>まずは、その例外がどういうものかをきちんと確認してみてはいかがでしょうか?
>
> Visual Studioで追うとレジストリを変更するメソッドの中の
> レジストリ操作処理で例外が発生し、キャッチで掴まれ
> 何もせずそのまま抜けてきます。

その例外はどんな例外ですか?
また、レジストリ操作はどんな操作をしていますか?

詳細を書いていないので、みんな困惑している部分があると思います。

まずは、どんなことをしてどんな例外が発生したかを確認しましょう。

例外が発生したら、デバッガが例外を検出して表示していますよね?

その例外の具体的な内容(どんなクラスなのかなどなど)を載せると
より的確な状況がわかります。

また、その例外はどういうコードを書いたところで発生しているかも
書いておくと、より具体的な状況が把握できます。

プログラムを全部記述する必要はありませんがエラーが出ているなら
そのエラーがわかる具体的な状況を記述することが重要です。

あなたの環境はネット越しの我々には何もわかりません。


>
> 管理者権限で実行すると例外は起きず、変更もできるのでレジストリの位置は間違っていないです。
>
こちらは、同じアカウントで昇格した状態で実行ですか?

それとも、別のアカウントですか?

HKEY_CURRENT_USER は、その時点でログオンしているユーザーのアカウントです。

Administorator アカウントと、別のユーザーアカウントでは
管理者権限があるかどうか以前に異なるユーザーですので、HKEY_CURRENT_USER の
内容も異なります。

当然、エラーの出る条件も異なるため、思っている状況にはならない可能性も十分あり得ます。

特定の「権限」でエラーが発生しているのか、
特定の「アカウント」でエラーが発生しているのかでは
似ているようで全く違います。

ちなみに、上記のレジストリキーは正しく作られている限り管理者権限は
必要ありませんし、そのユーザーの持つ最上位権限に昇格する必要もありません。

現在のユーザーが状態によらず自由に読み書きできるレジストリキーが、HKEY_CURRENT_USER キーです。

引用返信 編集キー/
■77491 / inTopicNo.13)  Re[4]: C# でプレースバーのレジストリ変更する方法
□投稿者/ 通りすがり (26回)-(2015/10/23(Fri) 17:41:24)
> 現在のユーザーが状態によらず自由に読み書きできるレジストリキーが、HKEY_CURRENT_USER キーです。

HKCU 自体はそうかもしれませんが、その下の Policies キーは違いますよ。(でないと、グループ ポリシーの意味が無い)

本件については、そもそも、レジストリ値を設定しようとすること自体が無意味に思えます。どうせドメインのポリシーで上書きされるわけですから。
引用返信 編集キー/
■77507 / inTopicNo.14)  Re[5]: C# でプレースバーのレジストリ変更する方法
□投稿者/ とっちゃん (306回)-(2015/10/26(Mon) 10:36:11)
No77491 (通りすがり さん) に返信
>>現在のユーザーが状態によらず自由に読み書きできるレジストリキーが、HKEY_CURRENT_USER キーです。
>
> HKCU 自体はそうかもしれませんが、その下の Policies キーは違いますよ。(でないと、グループ ポリシーの意味が無い)
>
> 本件については、そもそも、レジストリ値を設定しようとすること自体が無意味に思えます。どうせドメインのポリシーで上書きされるわけですから。

あ、そうか。そうですよね。
失礼しました。

引用返信 編集キー/
■77548 / inTopicNo.15)  Re[6]: C# でプレースバーのレジストリ変更する方法
□投稿者/ たてばと (5回)-(2015/10/30(Fri) 17:40:10)
No77507 (とっちゃん さん) に返信
> ■No77491 (通りすがり さん) に返信

別件が忙しくなり放置状態になり申し訳ありません

例外が発生するのは以下のようにごく一般的なコードでなのですが

Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\comdlg32\PlacesBar");

上記を使ったごく簡単なフォームプログラムを使って試したところ
例外が発生するパソコンでも例外は起きずレジストリの書込ができました。
AD も DCも使っていない環境なのでドメインのポリシーが影響を及ぼすことはないのですが
何か、別の事が関係しているようです。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -