首页 > 学院 > 开发设计 > 正文

C#控制管理VisualSVN Server

2019-11-17 02:50:52
字体:
来源:转载
供稿:网友
C#控制管理VisualSVN Server

VisualSVN Server可以用WMI接口管理(Windows Management Instrumentation)。 VisualSVN Server安装的计算机中,位于%VISUALSVN_SERVER%/WMI下的MOF文件描述了该接口。可以用C#代码控制管理VisualSVN Server。

我机器VisualSVN安装在D盘,MOF文件存在位置:D:/PRogram Files/VisualSVN Server/WMI/VisualSVNServer.mof

下面一些代码供参考:

[csharp]view plaincopyprint?在CODE上查看代码片usingSystem.Management;
  • usingSystem.Management.Instrumentation;
  • 并添加System.Management,System.Management.Instrumentation这两个组件的引用。

    1)创建Subversion%20用户%20'user1',密码为'secret'

    [csharp]view%20plaincopyprint?ManagementClassuserClass=newManagementClass("root//VisualSVN","VisualSVN_User",null);
  • //Obtainin-parametersforthemethod
  • ManagementBaSEObjectinParams=
  • userClass.GetMethodParameters("Create");
  • //Addtheinputparameters.
  • inParams["Name"]="user1";
  • inParams["PassWord"]="secret";
  • //Executethemethodandobtainthereturnvalues.
  • ManagementBaseObjectoutParams=
  • userClass.InvokeMethod("Create",inParams,null);
  • 2)创建新的repository%20'Repo1'

    [csharp]view%20plaincopyprint?ManagementClassrepoClass=newManagementClass("root//VisualSVN","VisualSVN_Repository",null);
  • //Obtainin-parametersforthemethod
  • ManagementBaseObjectinParams=
  • repoClass.GetMethodParameters("Create");
  • //Addtheinputparameters.
  • inParams["Name"]="Repo1";
  • //Executethemethodandobtainthereturnvalues.
  • ManagementBaseObjectoutParams=
  • repoClass.InvokeMethod("Create",inParams,null);

    3)设置SID%20S-1-5-32-545%20('BUILTIN/Users')%20Windows用户组对'Test'%20repository的读/写权限.%20FYI:%20accessLevel%20值在MOF有描述:%20"0%20-%20无权限,%201%20-%20只读,%202%20-%20读/写".[csharp]view%20plaincopyprint?ManagementClassuserClass=newManagementClass("root//VisualSVN","VisualSVN_WindowsAccount",null);
  • ManagementClassauthzClass=newManagementClass("root//VisualSVN","VisualSVN_SecurityDescriptor",null);
  • ManagementClasspermClass=newManagementClass("root//VisualSVN","VisualSVN_PermissionEntry",null);
  • ManagementObjectuserObject=userClass.CreateInstance();
  • userObject.SetPropertyValue("SID","S-1-5-32-545");
  • ManagementObjectpermObject=permClass.CreateInstance();
  • permObject.SetPropertyValue("Account",userObject);
  • permObject.SetPropertyValue("AccessLevel",2);
  • ManagementObjectrepo=newManagementObject("VisualSVN_Repository.Name='Test'");
  • ManagementBaseObjectinParams=
  • authzClass.GetMethodParameters("SetSecurity");
  • inParams["Object"]=repo;
  • inParams["Permissions"]=newobject[]{permObject};
  • ManagementBaseObjectoutParams=
  • authzClass.InvokeMethod("SetSecurity",inParams,null);封装后的Helper类:[csharp]view%20plaincopyprint?派生到我的代码片
    1. usingSystem;
    2. usingSystem.Collections.Generic;
    3. usingSystem.Linq;
    4. usingSystem.Management;//调用windowsWMI需引入此类库
    5. namespaceWhir.Software.InteralServerManage.SVNManager
    6. {
    7. ///<summary>
    8. ///VisualSVN操作辅助类:使用WMI控制VisualSVN,MOF文件存在位置:C:/ProgramFiles/VisualSVNServer/WMI/Vi
    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表