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

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

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

ハードウェア変更のスキャンの方法

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

■96539 / inTopicNo.1)  ハードウェア変更のスキャンの方法
  
□投稿者/ 億万 (1回)-(2020/12/11(Fri) 22:34:36)

分類:[.NET 全般] 

外部デバイスを制御するプログラムをVBで作成しているのですが
ハードウェアを追加した時に自動で認識されず、
その場合、デバイスマネージャーでハードウェア変更のスキャンする必要があるため、
これをプログラム上で行いたいと考えています。

検索して調べても情報は見つかりませんでした。
どのようなコードを使えば良いでしょうか?


引用返信 編集キー/
■96540 / inTopicNo.2)  Re[1]: ハードウェア変更のスキャンの方法
□投稿者/ 魔界の仮面弁士 (2937回)-(2020/12/11(Fri) 23:06:53)
No96539 (億万 さん) に返信
> その場合、デバイスマネージャーでハードウェア変更のスキャンする必要があるため、
> これをプログラム上で行いたいと考えています。

CM_Reenumerate_DevNode でどうでしょうか。
https://stackoverflow.com/questions/2181525/is-there-an-api-call-to-start-a-scan-for-hardware-devices
引用返信 編集キー/
■96541 / inTopicNo.3)  Re[2]: ハードウェア変更のスキャンの方法
□投稿者/ 億万 (2回)-(2020/12/12(Sat) 19:16:34)
できました!!!
 
どうもありがとうございました!!!

解決済み
引用返信 編集キー/
■96555 / inTopicNo.4)  Re[3]: ハードウェア変更のスキャンの方法
□投稿者/ 億万 (3回)-(2020/12/14(Mon) 16:31:10)
すいません、一つ問題が発生しました。
管理者権限無しでプログラムを実行すると
CM_Reenumerate_DevNode 「Access Denied」の でエラーが出てしまいます
デバイスマネージャーだと、このアプリがデバイスに変更を加えることを許可しますか?のダイアログが表示されませんが
この関数もダイアログ無しで実行することってできないでしょうか?

引用返信 編集キー/
■96556 / inTopicNo.5)  Re[4]: ハードウェア変更のスキャンの方法
□投稿者/ 魔界の仮面弁士 (2938回)-(2020/12/14(Mon) 17:30:23)
2020/12/15(Tue) 13:14:34 編集(投稿者)

No96555 (億万 さん) に返信
> デバイスマネージャーだと、このアプリがデバイスに変更を加えることを許可しますか?のダイアログが表示されませんが

おそらく、[ローカル セキュリティ ポリシー] において

[セキュリティの設定]
+[ローカル ポリシー]
 +[セキュリティ オプション]
  −[ユーザーアカウント制御: 管理者承認モードでの管理者に対する昇格時のプロンプトの動作]

が、下記の 6 になっている状況だと推察します。

1: 確認を要求しないで昇格する
2: セキュリティで保護されたデスクトップで資格情報を要求する
3: セキュリティで保護されたデスクトップで同意を要求する
4: 資格情報を要求する
5: 同意を要求する
6: Windows 以外のバイナリに対する同意を要求する


ただしこの場合でも、管理者で無ければ『ハードウェア変更のスキャン』はできません。


> この関数もダイアログ無しで実行することってできないでしょうか?

できません。
CM_Reenumerate_DevNode / CM_Reenumerate_DevNodeEx API の説明にも
「Callers of this function must have SeLoadDriverPrivilege.」
と書かれており、特権が必要になることが明記されています。

特権取得時に、権限昇格ダイアログを表示するかどうかの設定はあるものの、
たとえデバイスマネージャーであっても、管理者特権が必要な点は変わりません。


そもそも標準ユーザーでデバイスマネージャーを開いた場合、
起動時に下記の警告が表示され、読み取り専用モードになってしまうはず。
|
| 標準ユーザーとしてログオンしています。デバイス設定はデバイス マネージャーで
| 確認できますが、これを変更するには管理者としてログオンする必要があります。
|

もちろん標準ユーザーであっても、C:\Windows\System32\devmgmt.msc を
右クリックして「管理者として実行」を選択すれば、
権限昇格のダイアログ(とパスワード入力)が求められた後で、
『ハードウェア変更のスキャン』を行うことが可能です。

一方、最初から管理者権限を有するユーザーしてログオンしていた場合には、
「管理者として実行」を選ばなかったとしても、
『ハードウェア変更のスキャン』が可能ですし、デバイスマネージャーの
起動時にも、読み取り専用の警告は表示されません。

この時、権限昇格のダイアログが表示されるかは設定次第ですが、
たとえ昇格の確認ダイアログが出なかったとしても、
『ハードウェア変更のスキャン』の利用に特権が必要な点は変わりません。

現在は、起動時に権限昇格のダイアログは出ていないそうですが、
デバイスマネージャーを表示している mmc.exe のプロセスを
タスクマネージャーの詳細タブで確認してみれば、「管理者特権」列に
「はい」と表示されていることを確認できるかと思います。

https://forsenergy.com/ja-jp/devmgr/html/5c8521f1-3e2e-468d-9cb2-9ebd171af4af.htm
>>> ・コマンド プロンプト、[検索の開始] ボックス、または
>>>  [ファイル名を指定して実行] ボックスで、次のコマンドを入力します。
>>>
>>> mmc devmgmt.msc
>>>
>>> 結果は次のいずれかになります。
>>>
>>> * ビルトイン アカウントの Administrator としてログオンしている場合は、
>>>  デバイス マネージャーが開きます。
>>>
>>> * Administrators グループのメンバーであるユーザーとしてログオンしている場合は、
>>>  [ユーザー アカウント制御] ダイアログ ボックスが表示され、
>>>  デバイス マネージャーを開くには [続行] をクリックする必要があります。
>>>
>>> * 標準のユーザーとしてログオンしている場合は、デバイスを変更できないことを示す
>>>  メッセージが表示されます。[OK] をクリックすると、デバイス マネージャーが
>>>  読み取り専用モードで開きます。
>>>
引用返信 編集キー/
■96565 / inTopicNo.6)  Re[5]: ハードウェア変更のスキャンの方法
□投稿者/ 億万 (4回)-(2020/12/17(Thu) 22:16:49)
ありがとうございます。

調べてみましたが、
仰る通り、
6: Windows 以外のバイナリに対する同意を要求する
に設定されてありました。

タスクマネージャーの詳細タブで確認すると、「管理者特権」列に
「はい」が表示されていることが確認できました。


デバイスマネージャー上で、ハードウェアのスキャンを行ったとしても
特にエラーメッセージは表示されないのですが、
新しいデバイスがあったとしても検出されないので、スキャンは行っていないように思います。


ただ、管理者権限でプログラムを起動して
CM_Reenumerate_DevNode / CM_Reenumerate_DevNodeExを実行するとエラーは出ないのですが、
新しいハードウェアが接続されているにも拘わらず、
なぜか検出することができていません。

これは、管理者権限の問題というよりかは
PCの問題で検出できていないのでしょうか?


引用返信 編集キー/
■96570 / inTopicNo.7)  Re[6]: ハードウェア変更のスキャンの方法
□投稿者/ Azulean (1174回)-(2020/12/20(Sun) 13:10:08)
No96565 (億万 さん) に返信
> デバイスマネージャー上で、ハードウェアのスキャンを行ったとしても
> 特にエラーメッセージは表示されないのですが、
> 新しいデバイスがあったとしても検出されないので、スキャンは行っていないように思います。
>
> ただ、管理者権限でプログラムを起動して
> CM_Reenumerate_DevNode / CM_Reenumerate_DevNodeExを実行するとエラーは出ないのですが、
> 新しいハードウェアが接続されているにも拘わらず、
> なぜか検出することができていません。

それらはどちらも同じ処理だと思われるので、デバイスマネージャーでできないことをプログラムで書いても効果はありません。


> これは、管理者権限の問題というよりかは
> PCの問題で検出できていないのでしょうか?

PC の問題か、デバイスの問題か、どちらかである可能性は高いと思いますが、断定できる情報はありませんね。
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ