2016-12-26 1 views
0

Ich muss Allow remote connections to this computer einschalten, also möchte ich wissen, ob ich es mit WinAPI aktivieren kann.Erlaube Remote-Verbindung zu diesem Computer mit WinAPI

enter image description here

weiß jemand, ob dies mit einer beliebigen Funktion kann getan werden?

+0

bssed Dies ist eine Task sysadmin. Mach es mit Gruppenrichtlinien. –

+0

Ich weiß, aber ich wollte wissen, ob ich das mit der Windows-API tun könnte. –

Antwort

1

für diese zum nächsten Registrierungsschlüssel festlegen müssen:

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 

wenn Radio-Taste nicht ausgewählt nur

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

auch müssen Sie festlegen müssen "@FirewallAPI.dll,-28752" Firewall Gruppe von nächsten Code aktivieren:

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); 

ja, das ist nicht richtig dokumentiert. kann jedoch einige Informationen darüber finden.

sind Optionsfeld (zulassen Remote-Verbindungen auf diesem Computer) ausgewählt hing nur von fDenyTSConnections (0 oder 1 (= 0)!) - Sie können es testen, indem Sie Wert in regedit ändern und wieder öffnen System Properties/Remote Dialog

einige Beweise auf der MSND - Using Remote Desktop

ein Wert von 0 für die fDenyTSConnections Registrierungswert bedeutet, dass Remote Desktop auf dem System aktiviert ist, während ein Wert von 1 bedeutet, daß Remotedesktop ist deaktiviert. Wenn Sie später entscheiden, dass Sie Remotedesktop in Ihrer Server Core-Installation deaktivieren möchten, geben Sie an einer Eingabeaufforderung cscript % windir% \ system32 \ scregedit.wsf/ar 1 ein.

UserAuthentication - [0 oder 1] Steuer Netzebene Authentifizierung Checkbox (1 geprüft, 0 - ungeprüft) (wieder können Sie Wert in regedit ändern und System Properties/Remote Dialog wieder öffnen - oder aktivieren/deaktivieren Sie diese diese Box und Blick in regedit)

im Eigenschaftenbereich auf das Kästchen rechts neben der UserAuthentication Einstellung und Typ 1 auf Netzwerkebene Authentifizierung erfordern, wie hier gezeigt.

SecurityLayer - [0 oder 1 oder 2] - siehe die Table 6-1 The SecurityLayer Setting Values

und die letzte für Firewall (dies wird von Vista beginnen)

im Bereich Eigenschaften, Typ C : \ Windows \ system32 \ netsh advfirewall -firewall Satz Regelgruppe = "Remote Desktop" new enable = yes

so brauchen wir Regelgruppe = "Remote Desktop"

jetzt schauen Sie sich diese technet.microsoft.comlink

Zum Beispiel ermöglichen, Remote Desktop zu aktivieren, verwenden Sie die folgenden Schritte aus: <Group>@FirewallAPI.dll,-28752</Group>

wie ist Enabling a Group Existieren Beispiel auf MSDN. mein Code Snipet auf dieser

+0

Ich denke, die Zeile 'if (BSTR group = SysAllocString())' sollte stattdessen 'if (BSTR group = SysAllocString (group))' sein. – UltimaWeapon

+0

@UltimaWeapon - ja, natürlich. mein Fehler beim Kopieren-Einfügen (initial war 'BSTR group = SysAllocString (L" @ FirewallAPI.dll, -28752 ")). Ich repariere Code. Danke – RbMm

+0

Dies sieht aus wie undurchsichtige Hacker, die auf implementierungsabhängigen Details beruht. –

Verwandte Themen