如何获取已连接的保险库工作组用户的列表

时间:2015-03-16 15:48:54

标签: c# autodesk workgroup autodesk-vault

我已经搜遍了所有人,找不到我需要的答案。所以所有的帮助都表示赞赏。

在Autodesk的Vault工作组中,有许可证分为使用Vault工作组的用户。但是,当使用所有许可证时,很难知道谁仍然登录但目前没有使用保险库。

因此,为了解决这个问题,我想编写一个程序,给我一个连接用户列表。到目前为止,我发现了一些代码向我展示了Vault工作组中的所有用户,但是这些信息没用,因为我知道所有用户帐户。我只需要当前连接的用户。

我到目前为止的代码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void PrintUsers(object sender, RoutedEventArgs e)
    {
        MyVault.AdminSample.PrintUserInfo();
    }
}

class MyVaultServiceManager : System.IDisposable
{
    // We will incapsulate the WebServiceManager here.
    // The WebServiceManager will be used for our Vault server calls.
    private WebServiceManager _svcManager = null;
    public WebServiceManager Services
    { get { return _svcManager; } }

    public enum Mode { ReadOnly, ReadWrite };

    // Preventing usage of the default constructor - made it private
    private MyVaultServiceManager() { }

    // Constructor.
    // Parameter: - Log in as read-only, which doesn't consume 
    //              a license.
    //===============================================================
    public MyVaultServiceManager(Mode i_ReadWriteMode)
    {
        UserPasswordCredentials login = new UserPasswordCredentials(
                             "localhost", "Vault", "Administrator", "",
                             (i_ReadWriteMode == Mode.ReadOnly));
        // Yeah, we shouldn't hardcode the credentials here,
        // but this is just a sample
        _svcManager = new WebServiceManager(login);
    }


    void System.IDisposable.Dispose()
    {
        _svcManager.Dispose();
    }
}

class AdminSample
{
    // Lists all the users along with their roles and the vaults they 
    //   have access to.
    //===============================================================
    public static void PrintUserInfo()
    {
        try
        {
            using (MyVaultServiceManager mgr = new MyVaultServiceManager(
                                    MyVaultServiceManager.Mode.ReadOnly))
            {
                // The GetAllUsers method provides all the users' info
                //-----------------------------------------------------
                User[] users = mgr.Services.AdminService.GetAllUsers();

                TextWriter tmp = Console.Out;
                FileStream filestream = new FileStream("Vault_Users.txt", FileMode.Create);
                var streamwriter = new StreamWriter(filestream);
                streamwriter.AutoFlush = true;
                Console.SetOut(streamwriter);

                foreach (User user in users)
                {
                    UserInfo userInfo = mgr.Services.AdminService.GetUserInfoByUserId(user.Id);

                    Console.WriteLine(user.Name);

                    if (userInfo.Roles != null && userInfo.Roles.Length > 0)
                    {
                        Console.WriteLine("   Roles:");
                        foreach (Role role in userInfo.Roles)
                        {
                            Console.WriteLine("     ID: " + role.Id + " | Name: " + role.Name);
                        }
                    }

                    if (userInfo.Vaults != null && userInfo.Vaults.Length > 0)
                    {
                        Console.WriteLine("   Vaults:");
                        foreach (KnowledgeVault vault in userInfo.Vaults)
                        {
                            Console.WriteLine("     ID: " + vault.Id + " | Name: " + vault.Name);
                        }
                    }
                    Console.WriteLine("");
                }

                Console.SetOut(tmp);
                streamwriter.Close();
                filestream.Close();
                MessageBox.Show("Done!", "Completed!");

            } // using
        }
        catch (System.Exception e)
        {
            MessageBox.Show(e.Message);
        }
    } // PrintUserInfo()
}

1 个答案:

答案 0 :(得分:0)

目前无法做到这一点。但是有些程序从服务器读取AVFSlog文件,并过滤掉连接的用户。

Program that reads AVFSlog File