喫茶XRAYトップページ

[スレッド全体
]

[5574] UACに注意返信 削除
2011/12/5 (月) 20:01:30 Mr.XRAY
みなさん,
なんだか盛り下がって(?)いるようですが,
Windows 7 + Delphi 6でも十分とはいかないでしょうけど,使えると
思います.

宮さんのトラブルの原因はいろいろあるでしょうけど.UACがらみも
あるのではないかと思われます.
アプリを提供する場合,設定ファイル等も使用すると思います.
他のユーザが作成したファイルは,別のユーザが読みだすことは可能ですが,
書き込みは出来ません.
でも,エラーは発生しないことがあります.
で,こんな時,Windowsはどうするのか?
別の場所に書き込むことがあります.これが仮想化の問題です.
要注意ですね.

これに気付かないで,UACを無効にしたり,有効にしたりすると,泥沼
に陥ることになるてしょう.
UACは有効にしたままの状態で利用されることをお勧めします.
テスト目的であれば別ですが.
うまくいかないからUACを無効にしてしまえ!! というのは無理があるのでは
ないかと思います.利用者が必ずしもUACを無効にしているとは限りません.

以下のページに,仮想化というわけではありませんが,何か参考になる
かも知れないリンクがあります.
既にご存知かも知れませんが,参考までに.

[Windows Vista以降のOSでDelphi]
http://mrxray.on.coocan.jp/Delphi/Others/WindowsVista.htm


お金がないと言われれば返す言葉がありませんが,
旅行を一回程度我慢する,という手もあります.
仕事や趣味にどの程度まで使えるかですね.
骨董が趣味の人の中には,大変な御仁もいらっしゃるようです.

でも,年齢のことを考えると,宮さんってすごいですよね.
私がその年になった時に,どの程度頭が働くか疑問です.


[5575] UACに注意と言えば…返信 削除
2011/12/5 (月) 21:45:29 たてぐや
▼ Mr.XRAYさん

 こんなコードがあったとします。

{===============================================================================
Windowsをシャットダウンさせる。
===============================================================================}
procedure TFrmSet.Shutdown;
var
  hToken: THandle;
  tkp: TTokenPrivileges;
  dwRet: DWORD;
begin
  // このプロセスのためのトークンを取得。
  if (not OpenProcessToken(GetCurrentProcess,
    (TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY), hToken)) then
    Writeln('OpenProcessToken');

  // シャットダウンに必要な権限を取得。
  LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
  tkp.PrivilegeCount := 1; // one privilege to set
  tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  dwRet := 0;

  // シャットダウンプロセスに必要な特権を取得。
  AdjustTokenPrivileges(hToken, false, tkp, 0, nil, dwRet);

  // AdjustTokenPrivilegesの戻り値をチェック。
  if (GetLastError <> ERROR_SUCCESS) then
    Writeln('AdjustTokenPrivileges');

  // 強制的にアプリケーションを終了させながら、シャットダウン。
  if (not ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0)) then
    Writeln('ExitWindowsEx');
end;

 これ、おそらくUACにひっかかってダメだと思っていたのですが、すんなり
通ってシャットダウンしました。多分「シャットダウンプロセスに必要な特権
を取得します。」あたりで引っかかると思っていたのに意外でした。

※コード悪用厳禁

[5580] Re:UACに注意返信 削除
2011/12/6 (火) 14:47:44 宮 〔HomePage
▼ Mr.XRAYさん
> [Windows Vista以降のOSでDelphi]
> http://mrxray.on.coocan.jp/Delphi/Others/WindowsVista.htm
>

マスター、たてぐやさんいろいろご指導ありがとうございます。
最初にURLDownloadToFile()は機能しなくなったので・・と書いています。
UACの問題ではないと思います。
またインストールできないとか、コードをかけないとか、
コンパイルでエラーがでるとはという問題ではないですから。
これらの現象を私なりに追ってきたのですが
トラブルの一つに特定のサイトで
「OLEコントロールのウィンドウハンドルの取得に失敗しました」
WebControlをつかいタブの場合googleをくぐったらこれだと思います。
いっぱい出てきますが
http://support.microsoft.com/kb/247845/ja
これなど匂う。理解できないが。
でも、どれも解決まで行った情報はありませんでした。
結局、そのようなサイトでは特定のコードをスキャンして
そのJavaScriptを殺す方法が有効と言うことで
そのように処置しました。
ですから今は解決しました。
ありがとうございました。

[5592] Re:UACに注意返信 削除
2011/12/13 (火) 09:44:56 snail3
今更ですが、UACは必要でしょうか?

まるで画面がフリーズしたかと思うようなオープニングの後
出てくるダイアログを心の中で「おまえなんか嫌いだ」と思いながらクリック
するのは私だけではないと思います。 (^。^)

新しいプログラムをインストールする場合、あるいは初回は必要だと思いますが
毎回出てくるのはマイクロソフトの技術力のなさだと思います。

ユーザーが1回許可すれば、覚えていればよいのに、



[5593] Re2:UACに注意返信 削除
2011/12/13 (火) 18:47:31 Sara
▼ snail3さん

> 新しいプログラムをインストールする場合、あるいは初回は必要だと思いますが
> 毎回出てくるのはマイクロソフトの技術力のなさだと思います。
>
> ユーザーが1回許可すれば、覚えていればよいのに、

まったくですね・・・実行ファイルのハッシュ値等を取得して比較するなど
やりようはいくらでもあると思うのですが・・・
(あまり大きなファイルだとハッシュの取得に時間が掛かりすぎるか?)
(でも、いちいち許可のクリックをするよりは速いか・・・)
(頻繁にバージョンアップするような物だったりすると、ゴミハッシュが残るか・・・)
(それなら、ハッシュではなく、ファイルのフルパスの方が良いのか?)
(そうか、両方持たせればいいんだな・・・)(妄想中)

Windows8に期待ですかね・・・(^^;

[5594] Re3:UACに注意返信 削除
2011/12/14 (水) 18:28:13 snail3
▼ Saraさんこんばんは
> Windows8に期待ですかね・・・(^^;
Windows8ってプログラム終了する×が無くなりましたね。

どんどん使いづらく、遅くなるのがマイクロソフトが言う進化では? (^^

「昔はよかった」と言ってしまうと「じじい」になってしまうので
なんとか勉強してついてゆうねば (*_*)




[▼次のスレッド]
INCM/CMT
Cyclamen v3.82