繁体   English   中英

访问远程计算机上的虚拟磁盘服务-UnauthorizedAccessException

[英]Accessing Virtual Disk Service on remote machine - UnauthorizedAccessException

我尝试访问远程计算机上的虚拟磁盘服务(VDS)。 解决了与缺少Windows防火墙规则(RPC不可用)有关的一些问题之后,我在查询服务时遇到UnauthorizedAccessException(E_ACCESSDENIED)。

这是我的代码:

        // Create the service loader
        VdsServiceLoader loaderClass = new VdsServiceLoader();
        IVdsServiceLoader loader = (IVdsServiceLoader)loaderClass;            
        Console.WriteLine("Got Loader");

        // Load the vds service
        try
        {
            loader.LoadService(<Hostname>, out service);
        }
        catch (UnauthorizedAccessException)
        {
            // E_ACCESSDENIED
            Console.WriteLine("Need admin rights");
            return;
        }

如果我访问本地服务,但未以管理员权限执行时会抛出此异常。 如果我以管理员权限执行,那么一切都很好,并且可以毫无问题地获取本地VDS信息。

我想我必须在某个地方指定一个用户名/密码来访问该服务,但是我不知道在哪里。 或在远程计算机上授予对此服务的访问权限。

我也这样尝试了建议的ImpersonateUser

if (ImpersonationAPI.LogonUser(pUsername, pDomain, pPassword, LogonType.LOGON32_LOGON_NEW_CREDENTIALS, LogonProvider.LOGON32_PROVIDER_WINNT50, ref token) != 0)
{
    if (ImpersonationAPI.DuplicateToken(token, SecurityImpersonationLevel.SecurityImpersonation, ref tokenDuplicate) != 0)
    {
         tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
         LoadUserProfile(tokenDuplicate, pUsername);
         m_ImpersonationContext = tempWindowsIdentity.Impersonate();
         ...
     }
}

我还尝试了标志LOGON32_LOGON_INTERACTIVE,LOGON32_LOGON_NETWORK,LOGON32_LOGON_NETWORK_CLEARTEXT和LOGON32_LOGON_SERVICE。

两台机器都运行Win 7。

谢谢!

您需要登录到远程计算机,并在其中模拟具有适当权限的用户。 为此,将LogonUserLOGON32_LOGON_NEW_CREDENTIALS登录类型一起使用,使用所得令牌构造Windows身份并模拟它。 例如,请参见此问题获取模拟用户名

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM