• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:一般ユーザにローカルPCの管理者権限を与えたい)

一般ユーザにローカルPCの管理者権限を与える方法

このQ&Aのポイント
  • Windows2003ServerでActiveDirectoryを使用している場合、遠隔地のクライアントパソコンに一時的にAdministratorsグループにドメインユーザを追加する方法を考えています。
  • 方法1では、管理ツールを使用して一台ずつ操作する必要がありますが、電源が入っていない場合は作業ができません。
  • 方法2では、ドメインサーバーから新しいグループポリシーを作成し、制限されたグループにAdministratorを追加する方法ですが、既存のAdministratorグループのメンバーが上書きされます。

質問者が選んだベストアンサー

  • ベストアンサー
  • OMEGAT
  • ベストアンサー率70% (455/642)
回答No.1

ポリシーに関してですが、Administratorsグループのメンバを上書きする方法と、Administratorsグループにメンバを追加する方法があります。 以下のように設定すると、ローカルのAdministratorsグループは上書きされ、Administratorとドメイン\Domain Usersしか存在しなくなります(それ以外のAdministratorsグループのメンバはグループから削除されます)。 ・グループ名      :Administrators ・このグループのメンバ:ドメイン\Domain Users 以下のように設定すると、ローカルのAdministratorsグループに、ドメイン\Domain Usersを追加できます。 ・グループ名      :ドメイン\Domain Users ・所属するグループ  :Administrators ただし、今回はそのクライアントを使うドメインユーザーのみをAdministratorに追加したいということなので上記方法では不十分だと思われます。 またスクリプトをドメインの管理者権限で行う方法が分からないとのことですが、スタートアップスクリプトに仕込んだ場合にはクライアントのローカルシステム権限(だったと思います)で動作するので, クライアントのAdministratorsグループの操作は可能です(こちらでも実際に行っています)。 以下VBSからその部分だけ抜粋です。 Set objNetwork = CreateObject("Wscript.Network") ComputerName = objNetwork.ComputerName DomainName = 【ドメイン名】 UserName=【ドメインユーザー名】 Set objGroup = GetObject("WinNT://" & ComputerName & "/Administrators") Set objUser = GetObject("WinNT://" & DomainName & "/" & UserName) objGroup.Add(objUser.ADsPath) ※DomainNameは貴社ドメイン名を設定 ※UserNameはComputerNameに該当するドメインユーザー名を設定

nao515
質問者

お礼

早速のご回答ありがとうございます。 VBSについては検討しておりましたが、 > UserName=【ドメインユーザー名】 の部分も、自動的に【各クライアントを使うドメインユーザー】を指定したいにも関わらず、 スタートアップスクリプト起動の時点で取得できない、と考え諦めました。 (これについては試す時間が無く、実際には試しておりません。。) スタートアップスクリプトで、   UserName=objNetwork.UserName とし、普段ログインしているユーザーが選択されればベストなのですが、 これも実現できるのでしょうか? 現在、1パソコンに対して1ユーザーが割り当てられており、 約100台のパソコンには約100人のユーザーが割り当てられております。 100個分の固定のユーザー名を記述したVBSを作成する、 もしくは、if文のような記述で100ユーザー文の処理を記述する のは大変かなと思いました。 ※作業用のユーザーを1人割り当てるのが妥当かもしれないのですが、  現時点では会社のやり方がそうなので、今回についてはやり方を変えられません。 OMEGAT様は、もし複数クライアントのAdministratorsグループの操作を行う場合、 ご回答のVBAをどのように設定しておられるのでしょうか? 差し支えなければお教え願います。

その他の回答 (1)

  • OMEGAT
  • ベストアンサー率70% (455/642)
回答No.2

#1です。 スタートアップスクリプトはユーザーがログオンする前に実行されますので、ログオンユーザーの取得ができません。 また、通常ログオンするユーザーが決まっているとはいえ、あくまでもそれは運用がそうなっているだけで、実際にログオンしているユーザーを取得しようとすれば、レジストリを参照するか、プロファイルフォルダを参照し、過去にログオンしたユーザーを調べるなどの方法をとり必要があると思います(プロファイルフォルダはユーザー名と等しく無い可能性もありますが)。 こちらが実際に行っているのはクライアント50台程度ですが、以下のようにコンピュータ名とユーザー名を直接書いています。 Select Case Ucase(ComputerName) Case "PC01" UserName = "User01" Case "PC02" UserName = "User02" Case "PC03" UserName = "User03" ・ ・ ・ End Select

nao515
質問者

お礼

ご回答ありがとうございました。 やはり、コンピュータ名とユーザー名を直接記述するのが、 確実かつ一番行いたい事になる、という事だと思いました。 ちなみに、ADサーバーから実行すればクライアントPCの権限不足は気にしなくてもいいのか という考えで、以下のような方法でできないものかとも思ったのですが、 (1)(2)に記載している【通知】の部分が具体的に思い浮かばないので、諦めました。 (1) クライアントPCは、ログイン時に(スタートアップスクリプトではなく、、) ログオンスクリプトの実行により、ADサーバーへログオンした事を【通知】する。 ※【通知】情報には、【コンピュータ名】とログイン時の【ドメインユーザー名】を含める。 (2) ADサーバーは、【通知】の受信をトリガーとし、以下のVBSを実行する。 Set objNetwork = CreateObject("Wscript.Network") ComputerName = 【コンピュータ名】 DomainName = 【ドメイン名】 UserName = 【ドメインユーザー名】 Set objGroup = GetObject("WinNT://" & ComputerName & "/Administrators") Set objUser = GetObject("WinNT://" & DomainName & "/" & UserName) objGroup.Add(objUser.ADsPath)

関連するQ&A