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

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

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

Re[17]: UAC(ユーザ・アカウント・コントロール)


(過去ログ 116 を表示中)

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

■68199 / inTopicNo.1)  UAC(ユーザ・アカウント・コントロール)
  
□投稿者/ maimai (1回)-(2013/09/30(Mon) 14:35:59)

分類:[.NET 全般] 

Windows 8 + VS2012 で開発を行っています。
Windows 7, 8 で、requireAdministrator を指定した管理者権限が必要なアプリを標準でログインしたユーザが使用する場合、
パスワードを入力しなくてもよい
のような EXE の作成は可能でしょうか。

あれば教えていただければ幸いです。
引用返信 編集キー/
■68200 / inTopicNo.2)  Re[1]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ shu (395回)-(2013/09/30(Mon) 15:12:14)
No68199 (maimai さん) に返信
> Windows 8 + VS2012 で開発を行っています。
> Windows 7, 8 で、requireAdministrator を指定した管理者権限が必要なアプリを標準でログインしたユーザが使用する場合、
> パスワードを入力しなくてもよい
> のような EXE の作成は可能でしょうか。
>
> あれば教えていただければ幸いです。
Process.Startでユーザーとパスワードを指定して実行するとか

msdnより
http://msdn.microsoft.com/ja-jp/library/sxf2saat(v=vs.85).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-5


msdnの例ではコンソールで入力したパスワードを読み取っていますがAppendCharさえ使用すればパスワードを入力しなくても
大丈夫です。
引用返信 編集キー/
■68201 / inTopicNo.3)  Re[1]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ とっちゃん (149回)-(2013/09/30(Mon) 17:11:13)
とっちゃん さんの Web サイト
No68199 (maimai さん) に返信
> Windows 8 + VS2012 で開発を行っています。
> Windows 7, 8 で、requireAdministrator を指定した管理者権限が必要なアプリを標準でログインしたユーザが使用する場合、
> パスワードを入力しなくてもよい
> のような EXE の作成は可能でしょうか。
>
> あれば教えていただければ幸いです。

requireAdministrator は、起動するために、管理者権限(Administrator)を要求する(require)ので、管理者権限を持たないアカウントで実行される場合は、
そのアプリを実行するための管理者権限のアカウントと、パスワードが要求されます。

これは、アプリケーション自身が管理者権限での実行を要求しているためなので、これを読み取ってしまうOSで動いている限り回避することはできません。

動かすためには、OS起動時からアプリを実行するまでのどこかで必ず管理者アカウントでのログイン(一時的なものであれ、通常ログインであれ)が要求されます。
引用返信 編集キー/
■68202 / inTopicNo.4)  Re[1]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ Azulean (223回)-(2013/09/30(Mon) 22:45:02)
No68199 (maimai さん) に返信
> Windows 7, 8 で、requireAdministrator を指定した管理者権限が必要なアプリを標準でログインしたユーザが使用する場合、
> パスワードを入力しなくてもよい
> のような EXE の作成は可能でしょうか。

「できない」と答えた方が適切な気がします。
ところで、なぜそのようなことをしたかったのか、目的・狙いを共有してみませんか?
引用返信 編集キー/
■68203 / inTopicNo.5)  Re[2]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ maimai (2回)-(2013/10/01(Tue) 09:33:34)
No68200 (shu さん) に返信

 お返事、ありがとうございます。
今回はデスクトップのショートカットからの起動なので子プロではないですが、参考になりました。
ありがとうございました。


引用返信 編集キー/
■68204 / inTopicNo.6)  Re[2]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ maimai (3回)-(2013/10/01(Tue) 09:37:09)
No68201 (とっちゃん さん) に返信

 お返事、ありがとうございます。

> 動かすためには、OS起動時からアプリを実行するまでのどこかで必ず管理者アカウントでのログイン
> (一時的なものであれ、通常ログインであれ)が要求されます。

 む〜、ですね。
まぁ、裏ワザをばらすメーカーもいないでしょうが。


引用返信 編集キー/
■68205 / inTopicNo.7)  Re[2]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ maimai (4回)-(2013/10/01(Tue) 09:51:17)
No68202 (Azulean さん) に返信

 お返事、ありがとうございます。

> 「できない」と答えた方が適切な気がします。

そうですよね。私もそう言ってきました。


> ところで、なぜそのようなことをしたかったのか、目的・狙いを共有してみませんか?

大手ユーザの「わがまま?」です。
ただ、MSが配布してる?ツールを使うと、標準ユーザでも ID/PW を入力せずに起動できるとか。
けれど、Write, File Copy ができなかったり、昇格のための ID/PW を要求されるので、なんとかならんか、と。

そのツールで可能なら、PE系(忘れましたが)モジュールヘッダを書き換えるだけ?のような気がしたので投稿した次第です。
情報があればよろしくお願いします。


引用返信 編集キー/
■68206 / inTopicNo.8)  Re[3]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ とっちゃん (150回)-(2013/10/01(Tue) 10:55:23)
とっちゃん さんの Web サイト
No68205 (maimai さん) に返信
> ただ、MSが配布してる?ツールを使うと、標準ユーザでも ID/PW を入力せずに起動できるとか。

こんなツールは聞いたことがないですが?


> 大手ユーザの「わがまま?」です。
わがまま言ってるユーザーさんには、いちおうセキュリティ意識の確認をすることをお勧めします。

で、そのあたりはパスできたとして、最もローコストな対処策を書いておきます。

ユーザーからの要求とはいえ、外部で対応できるものではないので
ご本人に作業してもらう必要はありますが

「自身のマシンのローカルな管理者権限を自分の常用アカウントに付与」

することであらかた解決すると思います(UACの設定をいじらない場合は、起動時に昇格ダイアログが出ますけど)。


もちろん、セキュリティ意識を非常に高く持つ必要はありますけど、そのあたりの人の意識の責任までは取れませんからね。
あくまでも自己責任で。。。という形になります。

これなら特殊なツールは必要ありません。

ただし、社内のコンセンサスを得られるかどうかなどはそのわがままを言ってるユーザーさんの企業の問題なので、外部からは何とも言えません。
もちろんこの方法がとれるかどうかも。



一応もうちょっとまっとうな回答も。。。

そのアプリはなぜ管理者権限を要求しているのでしょう?
まずはアプリを作る側の人間としてはその部分を回避する(管理者権限がなくても動作するように修正する)ことができないか?
を検討してはいかがでしょうか?

もちろん、アプリケーションによってはどんな技術を用いても管理者権限が必要になるものもあります。
そういう特殊な事例はともかくとして、状況的に見て常用アプリだと思いますので、まずは管理者権限が必要なくなるように
アプリケーション自体を作り直すことを検討するほうがよいと思います。

もっとも、アプリが書き換えられない(理由はともかく)という場合もあるので、これもまた何とも言えないところはありますが。

引用返信 編集キー/
■68212 / inTopicNo.9)  Re[4]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ maimai (5回)-(2013/10/01(Tue) 16:41:50)
No68206 (とっちゃん さん) に返信

 丁寧なご返事、ありがとうございます。

> こんなツールは聞いたことがないですが?
App Compati 系ではないかと愚察しています。
教えてもらってないので、なんとも…?、ですけど。


> 「自身のマシンのローカルな管理者権限を自分の常用アカウントに付与」
その部署では責任者以外、標準ユーザでのログインが義務づけられているらしいです。
それゆえ、インストすらできない環境だとか。


> そのアプリはなぜ管理者権限を要求しているのでしょう?
管理者権限なぞとおこがましく言うつもりはないですが、ユーザ様に設定していただく
XML ファイルや INI もどきのファイルの Stream あたりでさえ(Write かな)怒って
きます。< CSIDL_COMMON_APPDATA
#ReadOnly とか、Write 権限がない場合でも、管理者なら保存可能(ご存知でしょうが)

あと、UDP/FTP あたりも不安ですし、クーロン(スケジュラ)も。

だもんで、昇格なしは無理かと思います。


引用返信 編集キー/
■68217 / inTopicNo.10)  Re[5]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ とっちゃん (151回)-(2013/10/01(Tue) 19:26:44)
とっちゃん さんの Web サイト
No68212 (maimai さん) に返信
>>「自身のマシンのローカルな管理者権限を自分の常用アカウントに付与」
> その部署では責任者以外、標準ユーザでのログインが義務づけられているらしいです。
> それゆえ、インストすらできない環境だとか。
>
それなりにセキュリティに対して意識を持っている企業(ユーザー企業)ならそういうものです。
仕事環境にむやみやたらとソフトをインストールされても困りますからね。

で、この条件が社内で強制されているのだとすれば、管理者権限をバイパスするではなく
管理者権限を必要としないアプリを提供する必要があると思うのですが違うのでしょうか。

>
>>そのアプリはなぜ管理者権限を要求しているのでしょう?
> 管理者権限なぞとおこがましく言うつもりはないですが、ユーザ様に設定していただく
> XML ファイルや INI もどきのファイルの Stream あたりでさえ(Write かな)怒って
> きます。< CSIDL_COMMON_APPDATA
> #ReadOnly とか、Write 権限がない場合でも、管理者なら保存可能(ご存知でしょうが)
>
確かに CSIDL_COMMON_APPDATA(System.Environment.SpecialFolder.CommonApplicationData) は
OSによって標準ユーザーに書き込み権限があったりなかったりしますね。
Win7(8も同様)は、管理者権限ないしは強い権限がないと書き込みできません。

何かを行う際に、管理者権限あるいはそのアカウントでの機能をすべて利用できるように昇格する必要がある場合
まず最初にそれを必要としない方法が本当にないのか?を検討することをお勧めします。

今回なら、CommonApplicationData ではなく、ApplicationData に保存する方法ではダメかどうかという部分など。

このあたりは共用マシンなのか、個人利用なのかでも変わってきますので、現時点の情報だけではどうするのがベスト(あるいはベター)なのかはわかりません。


> あと、UDP/FTP あたりも不安ですし、クーロン(スケジュラ)も。
>
UDPとFTPが並んでるのはなぜですか?
TCP/IP の利用ということであれば、メーラーやブラウザ、あるいはメッセンジャーなどが管理者権限を必要としないように自由に使えます。


えっと。。。クーロンというのは、cronのことですかね?Unix系OSのスケジューラが一番近い名前なのですが、Windows に標準搭載はしていません。
同じようなものとして、ATコマンド(Win8なら、schtasksを使えと出ます)ならありますけど。。。



> だもんで、昇格なしは無理かと思います。
>
出てる限りの情報を見る範囲では、昇格が必要な感じはしません。
どちらかというと開発サイドの知識不足に起因している若しくは、既存アプリを最低限の変更で対応したいからという気がします。

前者の場合は不足している知識をつけてもらうしかないので、勉強してくださいとしか言いようがないのですが
後者であれば、環境を昔と同様にすることで解決すると思います。
とはいえ昔の環境が何かにもよるので、どうすればいいかについては今の環境と何が違っているのかからチェックする必要がありますけど。

もしかしたら、きちんとインストール作業をすれば解決する問題なのかもしれませんが。

引用返信 編集キー/
■68230 / inTopicNo.11)  Re[6]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ maimai (6回)-(2013/10/02(Wed) 14:00:08)
No68217 (とっちゃん さん) に返信

> 何かを行う際に、管理者権限あるいはそのアカウントでの機能をすべて利用できるように昇格する必要がある場合
> まず最初にそれを必要としない方法が本当にないのか?を検討することをお勧めします。
(中略)
> 出てる限りの情報を見る範囲では、昇格が必要な感じはしません。

 確かに…
目から鱗かも…
てっきり、管理者権限がいるものと思い込んでいました。
#たたけばホコリが出る動作?もあるかも

っで、さっそく試してみました。

○ApplicationData での読み書き
○Program Files 以外の場所の xxx.exe.config の更新
△UDP を受信するリスナーの起動
 初回時のみ、許可の確認があり PW を求められる

もう少し調べてみます。
ありがとうございました。

引用返信 編集キー/
■68234 / inTopicNo.12)  Re[7]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ とっちゃん (152回)-(2013/10/02(Wed) 15:13:00)
とっちゃん さんの Web サイト
No68230 (maimai さん) に返信

> てっきり、管理者権限がいるものと思い込んでいました。
本当に管理者権限が必要な動作というのは通常のアプリケーションの動作では
皆無といっていいくらいほとんどありません。
もちろん0ではありませんが(例えばデバッグなど)。。。
それらはごく一部の特異なアプリケーションと言えるでしょう。


> △UDP を受信するリスナーの起動
>  初回時のみ、許可の確認があり PW を求められる
>
UDP でリッスンポートを開きに行ったら確認が求められた。。。は
UACではなくて、アンチウィルスあるいは、WindowsDefender などのセキュリティ関係ではありませんか?

で、その設定保存が管理者権限が必要な個所に書き込まれる。。。だった気がします。
Win8が出たのを最後にここしばらくマシン構築してないから全然覚えてませんが。。。w
もっとも、常用アプリでリッスンポートを開いてるのはメッセンジャーソフトくらいなので、自マシンの構築時以外では見かけないですけど。。。w

引用返信 編集キー/
■68240 / inTopicNo.13)  Re[8]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ maimai (7回)-(2013/10/03(Thu) 13:27:19)
No68234 (とっちゃん さん) に返信

>>△UDP を受信するリスナーの起動
>> 初回時のみ、許可の確認があり PW を求められる
>>
> UDP でリッスンポートを開きに行ったら確認が求められた。。。は
> UACではなくて、アンチウィルスあるいは、WindowsDefender などのセキュリティ関係ではありませんか?

 お返事、ありがとうごじます。
ご推察のとおりでしょうか。
ただ、VS 2005 以前でビルドしたネイティブな EXE には、盾のアイコンは付かないんですね〜

ProgramFiles, CommonApplicationData はダメらしいので、C ドライブの適当場所に、と
考えていますが、ここらはインストーラ側の問題かもしれませんね。

既存のユーザには、設定ファイルなどのコピーに管理者権限が必要なツールを作る、で対応
しようかなっと。


引用返信 編集キー/
■68243 / inTopicNo.14)  Re[9]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ とっちゃん (153回)-(2013/10/03(Thu) 17:23:59)
とっちゃん さんの Web サイト
No68240 (maimai さん) に返信
> ただ、VS 2005 以前でビルドしたネイティブな EXE には、盾のアイコンは付かないんですね〜
>
あら?じゃぁなんだろう。。。ってネイティブなEXE? 分類は .NET 全般になってますが
アプリは、C/C++ で作成したものですか?

> ProgramFiles, CommonApplicationData はダメらしいので、C ドライブの適当場所に、と
> 考えていますが、ここらはインストーラ側の問題かもしれませんね。
>
ProgramFiles や CommonApplicationData がダメというのはおそらくそこにインストールするとということだと思いますが
それは、インストーラ側の問題じゃなくてインストール先をどうするかですよね?

インストール先を決めるのはインストーラではなく、その製品の動作仕様をどうするかです。
インストーラはその動作仕様に基づいて適切な作業をするだけです(それができてないインストーラの場合はインストーラ側の問題ですけどw)。


> 既存のユーザには、設定ファイルなどのコピーに管理者権限が必要なツールを作る、で対応
> しようかなっと。
>
このあたりは、アプリケーションが初回起動時に古い情報を読み取るようにすれば、ツールがなくても実現できると思います。

任意のファイルをリードオンリーで開く分には、ProgramFiles も CommonApplicationData もどちらも問題なく開けます。
あとは、一括読み込みしてしまうなり、CopyFile API などを利用してコピーしてから利用するなりとすれば
移行ツールは必要ないと思います。

引用返信 編集キー/
■68259 / inTopicNo.15)  Re[10]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ maimai (8回)-(2013/10/04(Fri) 10:00:03)
No68243 (とっちゃん さん) に返信

> あとは、一括読み込みしてしまうなり、CopyFile API などを利用してコピーしてから利用するなりとすれば

 おはようございます。
CommonApplicationData 配下にあるファイルを SHFileOperation 系(途中経過が出るヤツ)で
コピーしようとすると昇格を求められました。
CopyFile 系でも試してみます。

引用返信 編集キー/
■68260 / inTopicNo.16)  Re[11]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ とっちゃん (154回)-(2013/10/04(Fri) 11:30:35)
とっちゃん さんの Web サイト
No68259 (maimai さん) に返信

> CommonApplicationData 配下にあるファイルを SHFileOperation 系(途中経過が出るヤツ)で
> コピーしようとすると昇格を求められました。
> CopyFile 系でも試してみます。
>
コピー先は、書き込みできますよね?
というか、なぜ面倒なSHFileOperationを使って?

もしかして。。。すごく巨大 or 大量のファイルがある?

引用返信 編集キー/
■68261 / inTopicNo.17)  Re[12]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ maimai (9回)-(2013/10/04(Fri) 11:56:43)
No68260 (とっちゃん さん) に返信

> コピー先は、書き込みできますよね?
> というか、なぜ面倒なSHFileOperationを使って?
> もしかして。。。すごく巨大 or 大量のファイルがある?

 デストには問題ありませんし、SHFileOperation と表記したのは、.Net の関数名を
忘れたから… また、CopyFile では CommonApplicationData 配下にアクセスできない、
で管理者でもエラーになるようです。

サイズ的にはデッカイですね。
#その昔 CopyFile は、大きな(30M 以上だったかな?)なヤツはこけるバグがあったし…

ただ、おかげさまで、わずかですが光が見えてきました。
遠いイバラの道が続きますが。

引用返信 編集キー/
■68265 / inTopicNo.18)  Re[13]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ とっちゃん (155回)-(2013/10/04(Fri) 13:16:14)
とっちゃん さんの Web サイト
No68261 (maimai さん) に返信
>  デストには問題ありませんし、SHFileOperation と表記したのは、.Net の関数名を
> 忘れたから… また、CopyFile では CommonApplicationData 配下にアクセスできない、
> で管理者でもエラーになるようです。
>
管理者でもエラーになるとしたら違う原因のような気がします。
昇格してもエラーになるのなら。。。ですけど。

SHFileOperation の .NET ラッパーはVB名前空間にあったかな?



> サイズ的にはデッカイですね。
> #その昔 CopyFile は、大きな(30M 以上だったかな?)なヤツはこけるバグがあったし…
>
> ただ、おかげさまで、わずかですが光が見えてきました。
> 遠いイバラの道が続きますが。
>

ファイルを読み取りモードでオープンすることはできますか?
.NET なら、System.IO.FileStream クラスですね。
FileStream s2 = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read);
こんな感じでオープンすれば、リードオンリーで開けます。

ここで、エラーが出るとすると、そのファイルには何らかの理由でアクセスできないとなるので
例外を補足して詳細を確認してみてください。


ちなみに、ファイルコピーは System.IO.File.Copy メソッドです。
#こちらはSH系のラッパーではありません

別件ですが、大きなファイルのコピーでこけるというのはちょっと気になる。。。
昔というのがいつのころを指しているのか?によっては現役の問題の可能性もありますから。。。

引用返信 編集キー/
■68266 / inTopicNo.19)  Re[14]: UAC(ユーザ・アカウント・コントロール)
□投稿者/ 魔界の仮面弁士 (362回)-(2013/10/04(Fri) 13:36:49)
No68265 (とっちゃん さん) に返信
> SHFileOperation の .NET ラッパーはVB名前空間にあったかな?

VB 的には、My.Computer.FileSystem オブジェクトのCopyFile メソッドですね。
.NET 的には、Microsoft.VisualBasic.MyServices 名前空間の FileSystemProxy クラス。

UI 表示ありにすれば、SHFileOperation API でコピーされ、
UI 表示無しにすれば、CopyFile API でコピーされたはず。
引用返信 編集キー/
■68279 / inTopicNo.20)  Re[14]: UAC(ユーザ・アカウント・コントロール)
 
□投稿者/ maimai (10回)-(2013/10/07(Mon) 11:51:55)
No68265 (とっちゃん さん) に返信

推測ですが、オーナーが違う、かも。
CommonApplicationData 配下では十分ありえるかと。
#リードオンリーのオープンも

.Net でなら管理者権限を付けて、か、VS 2005 の C で書くか、
どららかで行くのが手っ取りバヤイ気がします。


> 別件ですが、大きなファイルのコピーでこけるというのはちょっと気になる。。。
> 昔というのがいつのころを指しているのか?によっては現役の問題の可能性もありますから。。。

 おそらくは修正されているでしょうが、そういや、ちょっち大きい
ヤツは避けているかも…

引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -