locked
コントロールパネルの項目を別のユーザーとして実行する RRS feed

  • 質問

  • タイトルの内容として特に行いたい作業は下記の作業なのですが、なかなか上手くいきませんので皆様のお知恵をお借りしたいと思います。

    条件①WindowsにログインしているユーザーはRemortdesktopUser権限
    条件②UAC制御は無効にした状態
    条件③コンピューターはドメイン環境に参加済み
    条件④ログインユーザーはドメインユーザー,ローカルユーザーのどちらもあり得る
    条件⑤ローカルAdministratorはパスワード設定・有効化済み(←ShiroYUki_Motさまの返信を受けて追記しました)

    上記条件において、ログインユーザーの権限をAdministratorに変更したり、Administrator権限を持つユーザーで再度ログインすることなくプログラムのアンインストール作業を行いたいのです。

    WindowsXP時代であれば管理者権限を持たないユーザーでプログラムと機能を動かそうとすると管理者権限のパスワードを自動で聞いて来たり、右クリックから別のユーザーとして動かすことができましたが、Windows7になってからはできなくなってしまいました。

    インターネット等で調べて、下記のコマンドをコマンドプロンプトから動かせば良いという情報を得て行ってみたのですが、ウインドウは開くもののやはり権限不足というエラーではじかれてしまいます。
    runas /user:Administrator "control appwiz.cpl"

    何か方法は無いものでしょうか。

    皆様の回答をお待ちしております。


    2014年7月3日 23:54

回答

  • チャブーンです。

    この件ですが、「最終的なご要望」はなんになるのでしょうか?「プログラムと機能」GUI画面を管理者権限で開く、が真の目的であれば、仕様が変わってしまった以上、ムリだと思います。そうではなくて、「制限ユーザログオンのままプログラムのアンインストールがしたい」ということなら、GUI画面を無理に起こすのではなく、CUI(コマンド画面)で実現すれば問題はありません。

    コマンドプロンプトではなくPowerShellを使いましょう。PowerShellコンソール画面を「管理者として実行」で起動し(この時資格情報の入力画面が出ます)、Get-WMIObject Win32_Productで該当アプリケーションを取得すると、uninstallメソッドを使ってアンインストールができるようになります。アンインストール画面はふつうのGUIベースで起動するはずです。具体的なコマンドについては、したのページの「Answer」(緑のチェックがある投稿)をみてもらえばわかると思います。

    http://stackoverflow.com/questions/113542/how-can-i-uninstall-an-application-using-powershell

    • 回答の候補に設定 佐伯玲 2014年7月10日 0:50
    • 回答としてマーク tawara-hiro 2014年7月14日 6:55
    2014年7月9日 5:23

すべての返信

  • tawara-hiro さま よろしく。

    先ず、確認ですが。Administrator は Local-BuiltIn のものですか。
    その場合、既定では パスワードなし・無効化 の筈です。
    そして、確か Runas コマンドでは パスワードなし は取り扱えなかったと思います。

      Understanding Logon and Authentication
      http://technet.microsoft.com/en-us/library/bb457114.aspx
      中程の "Blank Password Restrictions"の項を参照

    是非、パスワードありの管理者権限を持つ別のユーザーでお試し下さい。
    2014年7月4日 1:17
  • ShiroYuki_Motさま ご返信ありがとうございます。

    申し訳ありません、書き忘れでした。
    ローカルAdministratorはパスワード設定済み、有効化した環境となっています。

    ローカルAdministrator以外の他の管理者権限・パスワードありのユーザーでも試してみましたが、やはり同じ結果でした。

    2014年7月4日 2:02
  • tawara-hiro さま 拝見しました。そうでしたか。

    ウインドウは開くもののやはり権限不足というエラーで という行が気になりました。
    これは、appwiz.cpl つまり プログラムと機能 はちゃんと開いているが、
    いざアンインストールすると何某かのエラーを吐く という解釈であっていますか。
    その場合に、具体的なエラー内容はどういうものですか。
    2014年7月4日 3:57
  • ShiroYuki_Motさま ご返信ありがとうございます。

    エラーコードとして表示されるわけでは無いのですが、例えばJAVAをアンインストールしてみようとすると
    「このアプリケーションを削除するにはAdministratorでなければなりません。このアプリケーションを削除するには、Administratorとしてログオンするか、またはテクニカルサポートグループに問い合わせてください。」
    といったメッセージが表示されてアンインストールができません。
    同様に、Windowsのインストールされた更新プログラムを削除しようとした場合も、
    「エラーが発生しました。一部の更新プログラムは正しくアンインストールされませんでした。」
    といったメッセージが出てアンインストールできない状態です。

    「プログラムと機能」をAdministratorとして動かせていないということなんでしょうか・・・

    2014年7月4日 5:19
  • tawara-hiro さま 拝見しました。

    taskmgr.exe (タスクマネージャー)を起動して、
    アプリケーション タブから プログラムと機能 を選択、右クリックで プロセスを表示 させて見て下さい。
    この時に 全ユーザーを表示 にして下さい。
     (通常に プログラムと機能 を起動すると、呼び出しを経て、Explorer.exe として動く様です。)
    OS のシェルとしての Explorer.exe の中で動いている様です。

    Explorer.exe のユーザーが ふたつ 存在しませんか。
    でないとすると、Runas では無理というのが結論かもしれませんね。

    PS: MS Sysinternals の ProcessExplorer で、動いているプロセスを追って見ましたが、
       通常呼出では Explorer.exe の中に、それらしい子プロセスはありませんでした。

    2014年7月4日 7:49
  • ShiroYuki_Motさま ご返信ありがとうございます。

    ご提示いただいたように確認してみました。

    Explorer.exeはログインしたRemortDesktopUser権限のユーザーのみで動いていて、ユーザー名Administratorで動いているプロセスは見当たりませんでした。

    ご指摘の通り、Runasコマンドでは無理なのか、それともコマンドに引数か何か足りないものがあるのか・・・・

    他にとっかかりが無いか、引き続き探してみます。

    2014年7月4日 23:37
  • tawara-hiro さま 拝見しました。 最後のひと あがき です。

    Explorer の フォルダオプション 表示 タブから 別のプロセスでフォルダウィンドウを開く を有効にしたら変わりますか。
    (無駄な作業かも知れませんが ... 。)

    尚、Vista 対象ですが、Runas の説明に以下の記述があります。
    http://technet.microsoft.com/ja-jp/library/cc771525%28v=WS.10%29.aspx
    ネットワーク上の場所からrunas コマンドを使って、プログラム、MMC コンソール、またはコントロール パネルのアイテムを起動しようとした場合、共有ネットワーク リソースに接続するために使用する資格情報は、プログラムを起動するために使用、資格情報が異なるであるため、失敗可能性があります。 後者の資格証明は、同じネットワーク共有リソースにアクセスできない可能性があります。

    また、Windows7 Runas Explorer registry で Internet 検索すると、
    レジストリを操作する事で回避の旨の記述も見付けられましたが、どうも、お勧め出来る内容ではありませんでした。(弊害あり?)
    頻繁でないのなら、素直に、別アカウントで Logon し直された方が ... 。

    2014年7月5日 8:12
  • ShiroYuki_Motさま ご返信ありがとうございます。

    「別のプロセスでフォルダウィンドウを開く」を有効にしても変わりませんでした。
    レジストリ操作はどこに影響するか予想できない部分があるので、やめておきます。
    やはり、別アカウントでログインするしかないのですかね・・・・

    ShiroYuki_Motさま、色々とアドバイス頂きありがとうございました。

    以下余談ですが、社内でシステム管理をやっていまして、ユーザーのパソコンメンテナンスをVNCソフトで行うことが多いんですが、ちゃんと人の話を聞く人だけだったら、こんなことも考えなかったんです・・・
    例えばリモートデスクトップ接続で管理者権限でログインして作業する場合には、ユーザー側のモニターではログイン前のパスワード入力画面になりますが、その裏で作業しているからログインしないように言っておいても、すぐにユーザーがログインしてきて作業が中断、ユーザーへ作業途中だからパソコンを使うな、と何度も連絡しなければならないことが多々ありまして・・・

    他には、外出先から社内ネットワークにSSLVPN接続ソフトを使って接続してくるパソコンの対応をするときには、ユーザーがSSLVPN接続を確立→VNCソフトを起動するユーザーへ管理者権限を与える→ログオフする→再度ログイン→再度SSLVPN接続を確立する→VNCソフトを再度起動する、ということが面倒なので、最初にVNCソフトで操作できるタイミングでプログラムと機能を触れたらな、と思った次第です。

    諦めきれないので、引き続き回答は募集させて頂こうと思います。

    2014年7月5日 9:22
  • control appwiz.cpl しても新プロセスが作られるわけではなく既存の Explorer.exe に引き継がれるだけなので、確認してませんが runas しても意味ないのではと思います。
    appwiz.cpl が結局実行する UninstallString を、昇格したコマンド プロンプトから直接実行した方がてっとりばやいのでは。


    • 編集済み HomeCloset 2014年7月5日 17:28
    • 回答の候補に設定 佐伯玲 2014年7月8日 6:49
    2014年7月5日 17:26
  • tawara-hiro さま 拝見しました。 ご提案です。

    リモート先の制御に、ソフトをアンインストールするのはコストが高いのでは とも思います。
    従って、一旦スレッドを閉じられて、RDP 時の対応方法そのものについて別途スレッドを上げ直された方が良い気がします。
    きっと、同じ様な問題を抱えている(いた)方達がいらっしゃるでしょうから。

    参考までに、私見。
    ログオン画面は任意の画像も指定可能ですし、ログインもユーザープロファイルのレジストリ値と実際のフォルダ名を食い違えてしまえば失敗(一時プロファイル禁止時)しますね。
    故意にログイン失敗の環境にしておいて ... では如何でしょうか。
     リモートログオン
      ログオン画面は %windir%\system32\oobe\info\backgrounds\backgroundDefault.jpg
      を警告文字入りで用意し、リモート時にレジストリ値で切り替える。OEM。
      強引にログイン出来ない様に、例えば、User Folder 名をセッションの間だけ Rename。
      万一に備え、何処かに(ファイルやログ)、Rename 情報を保管。
     リモートログオフ
      ログオン画面はレジストリ値で Default に戻す。 
      User Folder 名を戻す。
    AD 環境に詳しくないので、何ですが、ログオンとログオフスクリプトで何とかなる様な。
    あくまでも、発想のみなのですが。
    • 回答の候補に設定 佐伯玲 2014年7月8日 6:49
    2014年7月6日 15:30
  • チャブーンです。

    この件ですが、「最終的なご要望」はなんになるのでしょうか?「プログラムと機能」GUI画面を管理者権限で開く、が真の目的であれば、仕様が変わってしまった以上、ムリだと思います。そうではなくて、「制限ユーザログオンのままプログラムのアンインストールがしたい」ということなら、GUI画面を無理に起こすのではなく、CUI(コマンド画面)で実現すれば問題はありません。

    コマンドプロンプトではなくPowerShellを使いましょう。PowerShellコンソール画面を「管理者として実行」で起動し(この時資格情報の入力画面が出ます)、Get-WMIObject Win32_Productで該当アプリケーションを取得すると、uninstallメソッドを使ってアンインストールができるようになります。アンインストール画面はふつうのGUIベースで起動するはずです。具体的なコマンドについては、したのページの「Answer」(緑のチェックがある投稿)をみてもらえばわかると思います。

    http://stackoverflow.com/questions/113542/how-can-i-uninstall-an-application-using-powershell

    • 回答の候補に設定 佐伯玲 2014年7月10日 0:50
    • 回答としてマーク tawara-hiro 2014年7月14日 6:55
    2014年7月9日 5:23
  • HomeClosetさま,ShiroYuki_Motさま,チャブーンさま
    ご返信ありがとうございます。

    >HomeClosetさま
    削除するプログラムの選択自体は間違えることが無いよう、GUIベースで行いたいのです。

    >ShiroYuki_Motさま
    リモートデスクトップにログインさせない件は魅力的でしたが、テストアカウントで元に戻せなくなってしまいました。
    何か間違えたんだと思いますが、本番でミスが起きると怖いのでやめておきます・・・

    >チャブーンさま
    最終的な要望は「制限ユーザログオンのままプログラムのアンインストールがしたい」で間違いないのですが、コマンドプロンプトやPowerShellの扱いに疎い人員でも作業可能なように、削除するプログラムの選択等はGUIベースで行いたかったのです。
    またご紹介いただいたサイトのコマンドを参考にadobereaderの削除を試してみたのですが、これまた上手く動きませんでした。
    PowerShellのコマンドに入力ミスがあると思うので、そのあたりを検証してみようと思います。


    これ以上は労力をかける割に操作が複雑化して作業効率を上げられそうにないので、チャブーンさまの回答をマークさせて頂いて締め切らせて頂くことにいたします。

    お付き合いいただきまして、どうもありがとうございました。

    2014年7月14日 6:55