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

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

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

Re[6]: 日付と時刻の設定画面表示@Vista


(過去ログ 29 を表示中)

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

■13179 / inTopicNo.1)  日付と時刻の設定画面表示@Vista
  
□投稿者/ キムチ太郎 (1回)-(2008/01/25(Fri) 13:35:48)

分類:[Windows 全般] 

はじめまして。
キムチ太郎と申します。

以下のソースは日付と時刻の設定画面(Windowsの画面)を
表示するソースコードですが
このソースコードをVistaで実行すると
一瞬それらしい画面が出てすぐに閉じられてしまいます。
WindowsXP SP2では正常に動作確認済みです。


	HINSTANCE hDll = ::LoadLibrary("TIMEDATE.CPL");
	if (NULL != hDll) {
		APPLET_PROC Func = (APPLET_PROC)GetProcAddress(hDll, "CPlApplet");
		if (NULL != Func) {
			Func(GetSafeHwnd(), CPL_DBLCLK, 0, 0);
			ret=0;
		} 
		::FreeLibrary(hDll);
	}


おそらくFunc(GetSafeHwnd(), CPL_DBLCLK, 0, 0);
のCPL_DBLCLKで開いた直後に再度クリックが発生し
画面が終了しているとは思うのですが
詳細や対策がまだはっきりしてません。

ご存知の方がいらっしゃいましたら
ご教授願います。

目的は日付と時刻の設定画面を表示し
PCの日付と時刻の変更を行いたいと思っております。

なお、ログイン時はアドミニストレータ権限でログインしております。
開発環境:VisualStudio2005SP1
プラットフォーム :WindowsVista Uitimate

引用返信 編集キー/
■13191 / inTopicNo.2)  Re[1]: 日付と時刻の設定画面表示@Vista
□投稿者/ 七曜 (53回)-(2008/01/25(Fri) 16:09:45)
No13179 (キムチ太郎 さん) に返信
> 目的は日付と時刻の設定画面を表示し
> PCの日付と時刻の変更を行いたいと思っております。
>
> なお、ログイン時はアドミニストレータ権限でログインしております。
> 開発環境:VisualStudio2005SP1
> プラットフォーム :WindowsVista Uitimate

Windows VistaはAdministratorあるいはAdministratorsグループに所属しているユーザーでもUAC(User Account Control)が有効な場合、
権限が制限されて動作します。
日付と時刻の設定画面は、GUIで操作していくとわかるかと思いますが、このUACに引っかかる操作のはずなので
それで閉じられているんじゃないでしょうか。

引用返信 編集キー/
■13193 / inTopicNo.3)  Re[2]: 日付と時刻の設定画面表示@Vista
□投稿者/ キムチ太郎 (3回)-(2008/01/25(Fri) 17:01:00)
No13191 (七曜 さん) に返信


> Windows VistaはAdministratorあるいはAdministratorsグループに所属しているユーザーでもUAC(User Account Control)が有効な場合、
> 権限が制限されて動作します。
> 日付と時刻の設定画面は、GUIで操作していくとわかるかと思いますが、このUACに引っかかる操作のはずなので
> それで閉じられているんじゃないでしょうか。
>

ご回答ありがとうございます。

おっしゃるとおり「日付と時刻の設定画面」はUACに引っかかる動作です。

上記ソースコードの場合ですと
UAC画面は表示されません。

プログラムからUACに引っかかる動作をした場合は
UAC画面を表示せずに無条件で
その動作を行わせないということになるのでしょうか?

# 前述で記述していませんでしたが
 私がCPL_DBLCLKが問題なのではと思った根拠についてですが
 画面左下のスタートボタン押下後に
 「検索の開始」欄に「timedate.cpl」と入力した場合(ただし両端の括弧は除きます)、
 「日付と時刻」画面が表示されます。
 そのときの「日付と時刻」画面で表示時にフォーカスが設定されているのが
 「OK」ボタンでした。
 そこに対してクリックをしているからなのではと思った次第です。

引用返信 編集キー/
■13229 / inTopicNo.4)  Re[3]: 日付と時刻の設定画面表示@Vista
□投稿者/ 七曜 (54回)-(2008/01/26(Sat) 00:00:31)
No13193 (キムチ太郎 さん) に返信
> プログラムからUACに引っかかる動作をした場合は
> UAC画面を表示せずに無条件で
> その動作を行わせないということになるのでしょうか?

親プロセス(というのが適切かはわかりませんけどね)で、昇格していない限りUACのダイアログも出ずに終了したりしたような・・・。
そのコードがexe内に組み込まれているのであれば、exeを「管理者として実行」で起動してあげればよかった様な気がします。
UAC Elevationで検索すると関連の情報は得られるかと思いますが、プログラム内で権限昇格してUACをパスする様な仕組みは組めなくは無いはずですけどMS非推奨だったかと。




引用返信 編集キー/
■13233 / inTopicNo.5)  Re[3]: 日付と時刻の設定画面表示@Vista
□投稿者/ Azulean (19回)-(2008/01/26(Sat) 00:44:56)
> プログラムからUACに引っかかる動作をした場合は
> UAC画面を表示せずに無条件で
> その動作を行わせないということになるのでしょうか?
UACに引っかかるような操作を通常のユーザ権限で要求すれば権限がないとして拒否されます。
通常はそのような操作をするプロセスを別途起動させる(runas)なりして、ユーザにUACの確認ダイアログを表示します。
引用返信 編集キー/
■13242 / inTopicNo.6)  Re[4]: 日付と時刻の設定画面表示@Vista
□投稿者/ ちゃっぴ (86回)-(2008/01/26(Sat) 01:54:25)
ちゃっぴ さんの Web サイト
2008/01/26(Sat) 01:59:36 編集(投稿者)

Manifest 埋め込みましょう。

ちなみに UAC で制限される group および特権については下記参照

http://blogs.wankuma.com/tyappi/archive/2007/05/01/75131.aspx
引用返信 編集キー/
■13348 / inTopicNo.7)  Re[5]: 日付と時刻の設定画面表示@Vista
□投稿者/ キムチ太郎 (4回)-(2008/01/28(Mon) 13:20:53)
七曜さん、Azuleanさん、ちゃっぴさん
ご回答ありがとうございます。

返事遅れまして申し訳ございません。


UACに引っかかるコードはそのままでは拒否されるということですね。
MS非推奨は最終候補としたいと思います。

まだ具体的なやり方は不透明ですが

・Manifest 埋め込みましょう。
・通常はそのような操作をするプロセスを別途起動させる(runas)なりして、ユーザにUACの確認ダイアログを表示します。

上記の2点のやり方のどちらかで行っていこうと思います。
両方未経験なのでまたお力を借りることがあるかもしれませんが
よろしくお願いいたします。
引用返信 編集キー/
■13805 / inTopicNo.8)  Re[6]: 日付と時刻の設定画面表示@Vista
□投稿者/ キムチ太郎 (5回)-(2008/02/05(Tue) 09:36:12)
ご助言ありがとうございます。

今回、権限が必要なのは日付と時刻の設定のみで
日付と時刻の設定自体もあまり行われないため
UAC画面が表示される1つ前の画面([日付と時刻]画面)を表示し
そこからの操作はWindowsの操作と同様に、ということで
解決しました。

今後、システム自体が管理者権限で動かさないといけないときは
みなさまのご回答を参考にさせていただきます。
ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -