允许使用WinAPI远程连接到此计算机

时间:2016-12-26 16:49:29

标签: winapi

我需要设置Allow remote connections to this computer,所以我想知道如果我可以使用WinAPI启用它。

enter image description here

有人知道如果可以使用任何功能吗?

1 个答案:

答案 0 :(得分:1)

为此你需要设置下一个注册表项:

HKLM\System\CurrentControlSet\Control\Terminal Server\fDenyTSConnections = 0 
HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\UserAuthentication = (IsDlgButtonChecked() == BST_CHECKED)
HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\SecurityLayer = 0 or 1 or 2

如果未选择单选按钮,则只需设置

HKLM\System\CurrentControlSet\Control\Terminal Server\fDenyTSConnections = 1

您还需要通过下一个代码启用"@FirewallAPI.dll,-28752"防火墙组:

HRESULT EnableFirewallRule(PCWSTR cgroup, VARIANT_BOOL enable)
{
    if (BSTR group = SysAllocString(cgroup))
    {
        INetFwPolicy2* pNetFwPolicy2;

        HRESULT hr = CoCreateInstance(__uuidof(NetFwPolicy2), 0, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pNetFwPolicy2));

        if (!FAILED(hr))
        {
            hr = pNetFwPolicy2->EnableRuleGroup(NET_FW_PROFILE2_ALL, group, enable);

            pNetFwPolicy2->Release();
        }
        SysFreeString(group);
        return hr;
    }
    else return E_OUTOFMEMORY;
}

EnableFirewallRule(L"@FirewallAPI.dll,-28752", VARIANT_TRUE);
是的,这没有正确记录。但是可以找到一些关于此的信息。

是仅从fDenyTSConnections(0或1(!= 0))选择的单选按钮(允许远程连接到此计算机) - 您可以通过更改regedit中的值来测试它并重新打开System Properties/Remote对话框

关于MSND的一些证据 - Using Remote Desktop

  

fDenyTSConnections 注册表值的值为0意味着   远程桌面在系统上启用,值为1表示   远程桌面已禁用。如果您以后决定要禁用   在Server Core安装上的远程桌面,键入cscript   %windir%\ system32 \ scregedit.wsf / ar 1在命令提示符下。

UserAuthentication - [0或1]控制网络级身份验证复选框(1个已选中,0 - 未选中)(您可以再次更改注册表中的值和重新打开System Properties/Remote对话框 - 或选中/取消选中此框并在注册表中查看)

  

在“属性”窗格中,单击右侧的框    UserAuthentication 设置并输入1以要求网络级别身份验证,如下所示。

SecurityLayer - [0或1或2] - 查看Table 6-1 The SecurityLayer Setting Values

和防火墙的最后一个(这是从vista开始)

  

在“属性”窗格中,键入C:\ Windows \ system32 \ netsh advfirewall   -firewall set rule group =" Remote Desktop" new enable = yes

所以我们需要启用规则组="远程桌面"

现在查看此technet.microsoft.com link

  

例如,要启用远程桌面,请使用以下命令:   <Group>@FirewallAPI.dll,-28752</Group>

MSDN上如何存在Enabling a Group示例。我的代码snipet基于这个