BOOL CLoginCtrl::EstablishConnection(LPCTSTR lpszRemote, LPCTSTR lpszResource, BOOL bEstablish)
{
TCHAR szRemoteResource[_MAX_PATH];
DWORD rc;
// Remote resource, \\remote\ipc$, remote\admin$, ...
// disconnect or connect to the resource, based on bEstablish
//
if ( bEstablish )
{
NETRESOURCE nr;
nr.dwType = RESOURCETYPE_ANY;
nr.lpLocalName = NULL;
nr.lpRemoteName = (LPTSTR)&szRemoteResource;
nr.lpProvider = NULL;
//Establish connection (using username/pwd)
rc = WNetAddConnection2( &nr, m_lpszPassword, m_lpszUser, FALSE );
switch( rc )
{
case ERROR_ACCESS_DENIED:
case ERROR_INVALID_PASSWORD:
case ERROR_LOGON_FAILURE:
case ERROR_SESSION_CREDENTIAL_CONFLICT:
// Prompt for password if the default(NULL) was not good
if ( m_lpszUser != NULL && m_lpszPassword == NULL )
{
CString csError; AfxMessageBox( _T("Invalid password\n\n") );
// SetUserAndPassword( TRUE );
AfxMessageBox( _T("Connecting to remote service ... ") );
//Establish connection (using username/pwd) again
rc = WNetAddConnection2( &nr, m_lpszPassword, m_lpszUser, FALSE );
}
break;
}
}
else
// Disconnect
rc = WNetCancelConnection2( szRemoteResource, 0, NULL );
if ( rc == NO_ERROR )
return TRUE; // indicate success SetLastError( rc ); return FALSE;}//下面是调用上面的函数的程序
if ( !EstablishConnection( m_lpszMachine, _T("ADMIN$"), TRUE ) )
{
rc = -2;
throw "连接到主机\\Admin$失败";
}
// Connect to remote machine IPC$
//建立与IPC的连接
if ( !EstablishConnection( m_lpszMachine, _T("IPC$"), TRUE ) )
{
rc = -2;
throw "连接到主机\\IPC$失败";
}我用上面的代码都可以成功连接Windows2000,NT,2003 Server操作系统等,但现在发现这段代码无法实现对XP系统进行远程连接,是不是XP系统做了某种安全设置需要开启?还望高手指点一下!谢谢!
{
TCHAR szRemoteResource[_MAX_PATH];
DWORD rc;
// Remote resource, \\remote\ipc$, remote\admin$, ...
// disconnect or connect to the resource, based on bEstablish
//
if ( bEstablish )
{
NETRESOURCE nr;
nr.dwType = RESOURCETYPE_ANY;
nr.lpLocalName = NULL;
nr.lpRemoteName = (LPTSTR)&szRemoteResource;
nr.lpProvider = NULL;
//Establish connection (using username/pwd)
rc = WNetAddConnection2( &nr, m_lpszPassword, m_lpszUser, FALSE );
switch( rc )
{
case ERROR_ACCESS_DENIED:
case ERROR_INVALID_PASSWORD:
case ERROR_LOGON_FAILURE:
case ERROR_SESSION_CREDENTIAL_CONFLICT:
// Prompt for password if the default(NULL) was not good
if ( m_lpszUser != NULL && m_lpszPassword == NULL )
{
CString csError; AfxMessageBox( _T("Invalid password\n\n") );
// SetUserAndPassword( TRUE );
AfxMessageBox( _T("Connecting to remote service ... ") );
//Establish connection (using username/pwd) again
rc = WNetAddConnection2( &nr, m_lpszPassword, m_lpszUser, FALSE );
}
break;
}
}
else
// Disconnect
rc = WNetCancelConnection2( szRemoteResource, 0, NULL );
if ( rc == NO_ERROR )
return TRUE; // indicate success SetLastError( rc ); return FALSE;}//下面是调用上面的函数的程序
if ( !EstablishConnection( m_lpszMachine, _T("ADMIN$"), TRUE ) )
{
rc = -2;
throw "连接到主机\\Admin$失败";
}
// Connect to remote machine IPC$
//建立与IPC的连接
if ( !EstablishConnection( m_lpszMachine, _T("IPC$"), TRUE ) )
{
rc = -2;
throw "连接到主机\\IPC$失败";
}我用上面的代码都可以成功连接Windows2000,NT,2003 Server操作系统等,但现在发现这段代码无法实现对XP系统进行远程连接,是不是XP系统做了某种安全设置需要开启?还望高手指点一下!谢谢!
解决方案 »
- VC中怎么利用串口实现rs485接口控制灯的亮灭
- 求助
- VS2005中,DB->m_pRecordset->get_Collect(VARIANT Index,VARIANT * pvar)两个参数代表什么意思?
- Help:请帮忙看看以下代码——
- VC中调试时跟踪函数的问题
- 窗口刷新问题
- 属性页每页上是否可以有自己的OK按钮,且使他们不互相干扰,如何实现,请大虾支招.在线交流
- 如何在MDI子窗口中加菜单?
- 有趣的问题:)
- 如何做一个具有立体感的按钮?
- 多文档程序,怎样在初始化时打开多个文档而不出现“选择打开文档”对话框?
- 用WIN32 Dynamic-Link Library建了一个工程,为什么在里面不能用CTime类,请高手指教!!!!
你有可能XP没开远程桌面