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

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

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

Re[9]: UAC(ユーザーアカウント制御)の高レベル?設定方法


(過去ログ 126 を表示中)

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

■74682 / inTopicNo.1)  UAC(ユーザーアカウント制御)の高レベル?設定方法
  
□投稿者/ たろさ (1回)-(2015/01/22(Thu) 17:28:35)

分類:[.NET 全般] 

作ったソフトを配布しているのですが、
まれにユーザーアカウント制御(以下UAC)で、my.settingsの設定が
保存できない利用者がいます。

それはそれで、管理者権限で動かすように警告を出せばよいのですが、
当方でその状況を試してみようと、新規で適当にユーザーアカウントを作って
そちらでログインしてテストしてみたのですが、設定の保存が普通にできるのです。

どのようなUACの設定をすれば、ブロックされるようになるでしょうか?

また、そのUAC設定方法を再現できなくても良いので、
次のような対策は有効だと思われますか?

起動直後にmy.settingsでなにか文字列でも保存し
読めるか確認して、ダメならエラーを出す。

My.Settings.hoge = "問題なし"
If Not My.Settings.hoge = "問題なし" Then
MsgBox("エラーです")
Exit Sub
End If みたいな感じです。

UACがガチガチの状態が再現できないので、my.settingsの動きが、ソフト起動中は
読み書きできるが、ソフトを落とすと消えてしまうのか(この場合は上記方法は無理)
それとも、はじめから設定ファイルの作成が妨害されているのか
(この場合は、上記は有効だと思う) どちらかが判りません。

※一度ソフトを落として再度起動させれば判別はつくのでしょうが、
スマートではないように思いました。 できるだけスムーズに確認したいのです。


引用返信 編集キー/
■74688 / inTopicNo.2)  Re[1]: UAC(ユーザーアカウント制御)の高レベル?設定方法
□投稿者/ Azulean (415回)-(2015/01/22(Thu) 22:06:03)
Settings で保存されるデータはユーザーのプロファイルのフォルダーになりますので、原則的に UAC の影響を受けません。
(書き込めないのは Program Files, ProgramData, Windows など、すべてのユーザーに影響を与える箇所だとお考えください)

書き込みに失敗するとなると、ユーザーのプロファイルのフォルダーに書き込みができないような制限でもかけているのですかね…。
引用返信 編集キー/
■74692 / inTopicNo.3)  Re[2]: UAC(ユーザーアカウント制御)の高レベル?設定方法
□投稿者/ たろさ (2回)-(2015/01/23(Fri) 08:54:13)
Azulean様

ご返信ありがとうございます。

そうですよね、特にVBの設定も変えていないのでユーザーの
プロファイル内にできるはずだし、ファイルの作成もできないっておかしいですよね。

でも、当ソフト利用者の感じでは100人に1人(もしかしてもっと低い?)くらいいるんです。

で、その方と何度もやり取りして、どうもUACが怪しいと思い、
管理者権限で使用するようにしたら、トラブルは解消したんです。

やはり原因は不明ですかね・・・

引用返信 編集キー/
■74693 / inTopicNo.4)  Re[3]: UAC(ユーザーアカウント制御)の高レベル?設定方法
□投稿者/ shu (671回)-(2015/01/23(Fri) 09:03:25)
No74692 (たろさ さん) に返信

settingsのスコープがユーザーでなくアプリケーションになっていると
そんなこともあるかもしれません。
引用返信 編集キー/
■74700 / inTopicNo.5)  Re[4]: UAC(ユーザーアカウント制御)の高レベル?設定方法
□投稿者/ Azulean (1回)-(2015/01/23(Fri) 12:47:36)
2015/01/23(Fri) 12:48:16 編集(投稿者)

No74693 (shu さん) に返信
> settingsのスコープがユーザーでなくアプリケーションになっていると
> そんなこともあるかもしれません。

揚げ足を取るようで申し訳ないですが、標準的な Settings であれば、アプリケーションスコープの設定値は読み取り専用になり、setter が生成されないはずです。
引用返信 編集キー/
■74702 / inTopicNo.6)  Re[5]: UAC(ユーザーアカウント制御)の高レベル?設定方法
□投稿者/ shu (672回)-(2015/01/23(Fri) 16:05:43)
No74700 (Azulean さん) に返信
>
> 揚げ足を取るようで申し訳ないですが、標準的な Settings であれば、アプリケーションスコープの設定値は読み取り専用になり、setter が生成されないはずです。
最近のバージョンだとそうなのですが昔のものかそれをコンバートしたものなのかExeと同じフォルダに書かれるconfigの
書き換えが出来なくなってしまい、そのときアプリケーションスコープであったのをユーザースコープに直した記憶があります。
曖昧な記憶ですので間違っていたらすみません。
引用返信 編集キー/
■74705 / inTopicNo.7)  Re[6]: UAC(ユーザーアカウント制御)の高レベル?設定方法
□投稿者/ Azulean (418回)-(2015/01/24(Sat) 10:17:16)
No74692 (たろさ さん) に返信
> で、その方と何度もやり取りして、どうもUACが怪しいと思い、
> 管理者権限で使用するようにしたら、トラブルは解消したんです。

「管理者として実行」で解消したのか、「管理者権限を持つ別のアカウントを使用」で解消したのか、少し余地はありそうな気はしますが、根拠はありません。

お聞きする症状からすると、最初の質問に書かれていたコードでは検知できないと予想します。
理由は My.Setttings に値をセットした時点では保存されないからです。

My.Settings に対して明示的に Save し、Reload を呼べば、値を保存できていないことを検証できるかも。
ただ、手元環境で user.config に対して読み取り専用属性を付与すると、終了時に正しく終了しなかったとエラーのダイアログが表示されるんですよね…。


No74702 (shu さん) に返信
> 最近のバージョンだとそうなのですが昔のものかそれをコンバートしたものなのかExeと同じフォルダに書かれるconfigの
> 書き換えが出来なくなってしまい、そのときアプリケーションスコープであったのをユーザースコープに直した記憶があります。

念のため、この機能が初登場した VS2005 RTM の VB.NET のプロジェクトを見てみました。
現在の最新版と同様に、アプリケーションスコープでは Setter が生成されませんでしたので、何か特殊な実装をされていたのかもしれません。
引用返信 編集キー/
■74706 / inTopicNo.8)  Re[7]: UAC(ユーザーアカウント制御)の高レベル?設定方法
□投稿者/ shu (673回)-(2015/01/24(Sat) 10:25:27)
No74705 (Azulean さん) に返信

> ■No74702 (shu さん) に返信
>>最近のバージョンだとそうなのですが昔のものかそれをコンバートしたものなのかExeと同じフォルダに書かれるconfigの
>>書き換えが出来なくなってしまい、そのときアプリケーションスコープであったのをユーザースコープに直した記憶があります。
>
> 念のため、この機能が初登場した VS2005 RTM の VB.NET のプロジェクトを見てみました。
> 現在の最新版と同様に、アプリケーションスコープでは Setter が生成されませんでしたので、何か特殊な実装をされていたのかもしれません。

確認ありがとうございました。
引用返信 編集キー/
■74730 / inTopicNo.9)  Re[8]: UAC(ユーザーアカウント制御)の高レベル?設定方法
□投稿者/ たろさ (3回)-(2015/01/26(Mon) 16:31:20)
投げっぱなしで、返信遅くなりました。

スコープはユーザーです。
ソフトで設定して、ソフトを再起動したら設定が保持されていないという状況でした。
設定が保持されないだけで、特にエラーが表示されることもなく終了できている様子でした。

で、メールでやり取りしているうちにUACが原因だと思い、
実行ファイル右クリックで特権レベルで管理者で実行したところ、設定が保持されました。


Azulean様

>My.Settings に対して明示的に Save し、Reload を呼べば、値を保存できていないことを検証できるかも。
ただ、手元環境で user.config に対して読み取り専用属性を付与すると、終了時に正しく終了しなかったとエラーのダイアログが表示されるんですよね…。

明示的に Save し、Reload、これいいですね!これをとりあえずやってみます。


引用返信 編集キー/
■75011 / inTopicNo.10)  Re[9]: UAC(ユーザーアカウント制御)の高レベル?設定方法
□投稿者/ ???? (1回)-(2015/02/18(Wed) 08:25:59)
No74730 (たろさ さん) に返信
> 投げっぱなしで、返信遅くなりました。
>
> スコープはユーザーです。
> ソフトで設定して、ソフトを再起動したら設定が保持されていないという状況でした。
> 設定が保持されないだけで、特にエラーが表示されることもなく終了できている様子でした。
>
> で、メールでやり取りしているうちにUACが原因だと思い、
> 実行ファイル右クリックで特権レベルで管理者で実行したところ、設定が保持されました。
>
>
> Azulean様
>
> >My.Settings に対して明示的に Save し、Reload を呼べば、値を保存できていないことを検証できるかも。
> ただ、手元環境で user.config に対して読み取り専用属性を付与すると、終了時に正しく終了しなかったとエラーのダイアログが表示されるんですよね…。
>
> 明示的に Save し、Reload、これいいですね!これをとりあえずやってみます。
>
>
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -