2

WinXP、Vista、および7オペレーティングシステムを対象としたC#アプリケーションを実行しています。

1つの機能は、プログラムでユーザーに設定されたグループを追加、削除、変更できることです。

これを実現する方法について助けを求めることはできますか?

WMIでこれを行うことは可能ですか?私のコードは主にWMIを使用してユーザーを取得しています。


現在Windows7を使用しています

このコードをテストしようとしています

DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",Computer");
localMachine.Properties["member"].Add("Chevi");
localMachine.CommitChanges();
localMachine.Close();

そしてそれはこのエラーを吐き出している

ディレクトリプロパティがキャッシュに見つかりません。

プロパティコレクションを列挙してみましたが、これを取得しました

OperatingSystem

OperatingSystemVersion

Owner

Division

ProcessorCount

Processor

Name
4

3 に答える 3

2

ローカルグループを使用している場合は、systemnetコマンドを呼び出すことでこれを行うことができます。たとえば、ユーザーをグループに追加するには、次のように呼び出します。

net localgroup MyGroup /add SomeUser

詳細については、コマンドプロンプトnet help localgroupで入力してください。

WMIを使用してこれを行うこともできます。これはVBScriptですが、.NETまたはお好みのプログラミングツールキットに適合させることができます。

Dim oComputer
Computer = "computername"
Groupname = "Administrators"
ObjectToAdd = "Administrator"

' Bind to the computer.
Set oComputer = GetObject("WinNT://" & Computer & ",computer")

' get group object
Dim oGroup
Set oGroup = oComputer.GetObject("group", GroupName)

' Add the user object to the group.
oGroup.Add "WinNT://" & Computer & "/" & ObjectToAdd 

クレジット:Matt Hickman、http ://www.tech-archive.net/Archive/WinXP/microsoft.public.windowsxp.wmi/2004-04/0007.html

于 2010-03-06T02:53:34.643 に答える
2

また、C#を使用してVisualStudio2010で1つのWindowsアプリケーションを開発しました。これはプログラムの作業バージョンであり、既存のユーザーを特定のグループに追加します。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.DirectoryServices;

namespace Utility_Add_User_To_Group {

    public partial class Form1 : Form {

        public Form1() {
            InitializeComponent();
        }

        private void btn_Add_Click(object sender, EventArgs e) {
            string usr, grp;
            usr = txt_UserName.Text;
            grp = txt_GroupName.Text;

            add(usr, grp);
            groupBox2.Visible=true;
        }

        private void add(string usr, string grp) {
            bool flagUsr, flagGrp;
            try {
                DirectoryEntry AD = new DirectoryEntry("WinNT://" +Environment.MachineName + ",computer");
                DirectoryEntry group, user;

                group = AD.Children.Find(grp, "group");
                user = AD.Children.Find(usr, "user");
                if (user != null) {
                    label3.Text += "User Name Exists!!!";
                    flagUsr = true;
                } else {
                    label3.Text += "Sorry, No Such User Name Found!!!";
                    flagUsr = false;
                }

                if (group != null) {
                    label4.Text += "Group Exists!!!";
                    flagGrp = true; 
                } else {
                    label4.Text += "Sorry, Group Does Not Exists!!!";
                    flagGrp= false;
                }

                if(flagGrp == true && flagUsr == true) {
                    group.Invoke("Add", new object[] { user.Path.ToString() });
                    label5.Text += "Congratulations!!! User has been added to the group";
                } else {
                    label5.Text += "Error Happened!!! User could not be added to the group!!!";
                }
            } catch (Exception e) {
                label6.Text +=e.Message.ToString();
                label6.Visible= true;
            }
            }

        private void btn_Clear_Click(object sender, EventArgs e) {
            normal();
        }
        private void normal() {
            txt_GroupName.Text="";
            txt_UserName.Text="";
            txt_UserName.Focus();

            groupBox2.Visible=false;
        }
        }
    }
于 2012-02-10T10:25:58.787 に答える
1
  • NetUserAddを使用してユーザーを作成します
  • NetGroupAddを使用して、グループを作成します
  • NetGroupAddUserを使用して、ユーザーをグループに追加します
  • NetGroupDelUserを使用して、グループからユーザーを削除します
  • NetLocalGroupAddを使用して、ローカルグループを作成します
  • NetLocalGroupAddMembersを使用して、ユーザーをローカルグループに追加します

などなど

于 2010-03-06T02:54:21.213 に答える