我需要設置Allow remote connections to this computer
遠程連接到此計算機,所以我想知道如果我可以用WinAPI的啓用它。允許使用WinAPI的
有誰知道這是否可以與任何函數來完成?
我需要設置Allow remote connections to this computer
遠程連接到此計算機,所以我想知道如果我可以用WinAPI的啓用它。允許使用WinAPI的
有誰知道這是否可以與任何函數來完成?
爲此,您需要設置下一個註冊表項:
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)!) - 可以通過在註冊表編輯器變更值測試,並重新打開System Properties/Remote
對話框
在MSND一些證據 - Using Remote Desktop
0爲fDenyTSConnections註冊表值意味着 遠程桌面系統上啓用,而1值意味着值 遠程桌面被禁用。如果您稍後決定要在服務器核心安裝上禁用 遠程桌面,請在命令提示符處鍵入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
和最後防火牆(這是從遠景開始)
在屬性窗格,C型:\ WINDOWS \ SYSTEM32 \的netsh advfirewall的 -firewall設置規則組= 「遠程桌面」 新啓用= YES
因此,我們需要啓用規則組= 「遠程桌面」
現在看這個technet.microsoft.com
link
例如,要啓用遠程桌面,使用以下命令:
<Group>@FirewallAPI.dll,-28752</Group>
如何Enabling a Group存在MSDN上的示例。我的代碼snipet基於此
我認爲'if(BSTR group = SysAllocString())'應該是'if(BSTR group = SysAllocString(group))'而不是。 – UltimaWeapon
@UltimaWeapon - 是的,當然。我的錯誤,當複製粘貼(初始是'BSTR組= SysAllocString(L「@ FirewallAPI.dll,-28752」)')。我修復了代碼。謝謝 – RbMm
這看起來像不透明的hackery,依賴於實現相關的細節。 –
這是一個系統管理員任務。用組策略來做。 –
我知道,但我想知道如果我可以通過使用Windows API來做到這一點。 –