管理者権限のないユーザーでのIPアドレス変更(追加) – プログラミング – Home

管理者権限のないユーザーでのIPアドレ...
 
通知
すべてクリア

[解決済] 管理者権限のないユーザーでのIPアドレス変更(追加)


へたっぴ
 へたっぴ
(@へたっぴ)
ゲスト
結合: 21年前
投稿: 9
Topic starter  

こんにちは。へったっぴプログラマです。
質問があります。環境はWin2000、VC++6.0、Platform SDK です。
管理者権限のないユーザーで、IPアドレスを設定または追加するプログラムは可能でしょうか?
というのも、ある機器とTCP/IPで通信するために特定のIPアドレスを使うのですが、ユーザー
が自分でIPアドレスの設定を変更する必要がないように、その機器と接続するときだけ一時的に
プログラムでIPアドレスを変更しなくてはならず、しかも管理者権限のないユーザーも対象とい
う要求があるのです。
管理者権限のあるユーザーの場合、PlatformSDK-InternetProtocolHelperのAddIPAddress()
でIPアドレスを追加する方法でクリアしました。
ですが、管理者権限がないと無理です。
やはり管理者権限がないとIPアドレスの変更等をするのは無理でしょうか。
逆に、変更ができてしまう方がセキュリティー上問題があるような気もしますが、「管理者権限
がないと無理です!」と自信をもって言えないため断ることができません。
もし可能であればその方法を教えてください。または、絶対無理!とお答えください。
宜しくお願いします。


引用未解決
トピックタグ
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 21年前
投稿: 33
 

>やはり管理者権限がないとIPアドレスの変更等をするのは無理でしょうか。

無理です。

が、「抜け道」を用意することは可能です。

LogonUser() や CreateProcessAsUser() などによって、特定のプロセスの実行アカウン
トを偽装することが出来ます。

ただし、偽装の際にはそのアカウントのパスワードも必要になるので、それの保管方法
(=オペレータに入力させるくらいなら、はじめから管理者権限で実行すればいい話な
ので)について、入念な設計が必要です。

もう1つ、NT 系OSであれば、管理者権限で実行する「サービス」を作成して、管理者
権限の必要な処理をその「サービスに依頼する」という手もあります。

「サービス」とのインターフェース方法は要件等ですが、ATL COM AppWizard で「サー
ビス」の雛型を作れば、COM 経由で簡単に処理依頼をすることが出来ます。

この手法を採用する場合の注意点は、「サービスへの処理依頼方法がバレたら、誰でも
それを実行することが出来る」ことです。

これが問題となる場合は、「サービス」と「サービスに処理を依頼する側」との間で、
なんらかの認証処理を盛り込む必要があるでしょう。


返信引用
へたっぴ
 へたっぴ
(@へたっぴ)
ゲスト
結合: 21年前
投稿: 9
Topic starter  

渋木さん、ありがとうございます。
そういう方法があったのですね。
まずはLogonUser()、CreateProcessAsUser() を試してみます。
「できません」と言って断っていたら信用を失いかねないので感謝しております。
これからプログラムしてみます。
結果はまた報告いたします。


返信引用
へたっぴ
 へたっぴ
(@へたっぴ)
ゲスト
結合: 21年前
投稿: 9
Topic starter  

LogonUser()、CreateProcessAsUser() を試してみましたが、
SE_TCB_NAME 特権をもっていないとダメということで、この方法は断念しました。
使用するユーザーに対して事前に権限を付加しておかないといけないのですが、それを付加する
ために管理者権限がいるので・・・
次はサービスによる方法を試してみます。


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 21年前
投稿: 33
 

一般ユーザでログオンしていても、runas や「別のユーザとして実行」ができるので、
手はあるはずですよ。


返信引用
へたっぴ
 へたっぴ
(@へたっぴ)
ゲスト
結合: 21年前
投稿: 9
Topic starter  

渋木宏明(ひどり) さん、色々とアドバイスありがとうございます。
「サービス」を使って一般ユーザーでもIPアドレスを変更することができました。
実際にIPを変更しているのは「サービス」としてバックグラウンドで動いている管理者権限のあ
るプロセスということです。
ですが、お恥ずかしいのですがCOMの知識があまりないため、プロセス間の通信は名前付きパイ
プで実装しました。

>COM 経由で簡単に処理依頼をすることが出来ます。
これに関しては時間がなく調べることができませんでしたが、興味があるのでいずれはチャレン
ジしてみようと思います。

> 一般ユーザでログオンしていても、runas や「別のユーザとして実行」ができるので、
これも気になりますが、今は「サービス」で進めようと思います。

どうもありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました