>> 欢迎您, 傲气雄鹰: 重登陆 | 退出 | 注册 | 资料 | 设置 | 排行 | 新贴 | 精华 | 管理 | 帮助 首页

  小榕软件实验室
  刀光雪影
  程序种植者的实现代码
发表文章 发表涂鸦
  回复数:31  点击数:578 将此页发给您的朋友        
作者 主题: 程序种植者的实现代码 ( 页: 1 2 3 ) 回复 | 收藏 | 打印 | 篇末
far帅哥哦
级别:中级站友
威望:0
经验:0
货币:387
体力:42.4
来源:61.174.138.*
总发帖数:60
注册日期:2002-07-03
查看 邮件 主页 QQ 消息 引用 复制 下载 

/*****************************************************************
** 函数名: ConnIPC
** 功能描述: 建立ipc连接
** 变量说明: RemoteName 远程计算机名,以\\开头的字符串, User 用户名, pass 密码
** 返回值:连接成功 1,连接失败 0
** 作 者: far
** 日 期: 2002.6.6 11:04
****************************************************************/
int CNetWorking::ConnIPC(char *RemoteName,char *User,char *Pass)
{
    NETRESOURCE nr;
    char RN[50]="\\\\";
    strncat(RN,RemoteName,sizeof(RN)-11);
    strcat(RN,"\\ipc$");
    nr.dwType=RESOURCETYPE_ANY;
nr.lpLocalName=NULL;
    nr.lpRemoteName=RN;
    nr.lpProvider=NULL;
    int iResult = WNetAddConnection2(&nr,Pass,User,FALSE);
    if(iResult == NO_ERROR)return 1;
    else    return 0;
}

/*****************************************************************
** 函数名: DisConnIPC
** 功能描述: 断开IPC连接
** 变量说明: RemoteName 远程计算机名,以\\开头的字符串
** 返回值:无
** 作 者: far
** 日 期: 2002.6.6 15:16
****************************************************************/
void CNetWorking:isConnIPC(char *RemoteName)
{
    char tmp[52],tmp2[96];
    strncpy(tmp,RemoteName,sizeof(tmp)-1);
    wsprintf(tmp2,"\\\\%s\\ipc$",tmp);
    m_dwError = WNetCancelConnection2(tmp2,CONNECT_UPDATE_PROFILE,TRUE);
    if(m_dwError != NO_ERROR)
    {
#ifdef _DEBUG
        DumpError();
#endif
    }
}

/*****************************************************************
** 函数名: SendFile
** 功能描述: 上载文件到远程计算机
** 变量说明: RemotePathAndFile 文件在远程计算机的路径,LocalPathAndFile 要上载的本机文件路径
** 返回值:上载成功 1,上载失败 0
** 作 者: far
** 日 期: 2002.6.6 15:16
****************************************************************/
BOOL CNetWorking:endFile(char *RemotePathAndFile, char *LocalPathAndFile)
{
    HANDLE hRF;
    hRF = CreateFile(RemotePathAndFile, GENERIC_ALL,FILE_SHARE_WRITE, NULL,
        CREATE_ALWAYS,
        FILE_ATTRIBUTE_NORMAL,
        NULL);//建立文件
    if (hRF == INVALID_HANDLE_VALUE)return FALSE;
    //写文件过程:
    unsigned long iLength = 0;
    char* pBuf = NULL;
    TRY
    {
        CFile file(LocalPathAndFile, CFile::modeRead);
        iLength = file.GetLength();
        pBuf = new char[iLength];
        memset(pBuf, 0, iLength);
        file.Read(pBuf, iLength);           
        file.Close();
    }
    CATCH (CException, e)
    {
        CString str = (CString)LocalPathAndFile;
        str += " : Read file error!";
        AfxMessageBox(str);
    }
    END_CATCH
   
    unsigned long iWritten = 0;
    unsigned long iThisWritten = 0;
    while(iWritten < iLength)
    {
        iThisWritten = 0;
        if(WriteFile(hRF, pBuf+iWritten, iLength-iWritten, &iThisWritten, NULL) == 0)return FALSE;
        iWritten += iThisWritten;
    }
   
    CloseHandle(hRF);

    if(pBuf)delete []pBuf;

    return TRUE;
}

/*****************************************************************
** 函数名: NetTime
** 功能描述: 查询远程计算机的当前时间
** 变量说明: strServer 以\\开头的远程计算机名
** 返回值:远程计算机的当前时间,不计算年月日,单位为秒
** 作 者: far
** 日 期: 2002.6.3 2:14
****************************************************************/
unsigned long CNetManageFunc::NetTime(CString strServer)
{
    LPTIME_OF_DAY_INFO pBuf = NULL;
    NET_API_STATUS nStatus;
    LPCWSTR pszServerName = NULL;
    unsigned long ulResult = 0;
   
    pszServerName = strServer.AllocSysString();

    //
    // Call the NetRemoteTOD function.
    //
    nStatus = NetRemoteTOD(pszServerName,
        (LPBYTE *)&pBuf);
    //
    // If the function succeeds, display the current date and time.
    //
    if (nStatus == NERR_Success)
    {
        if (pBuf != NULL)
        {
            FILETIME FileTime, LocalFileTime;
            SYSTEMTIME UTCTime, LocalTime;
            UTCTime.wDay = pBuf->tod_day;
            UTCTime.wDayOfWeek = pBuf->tod_weekday;
            UTCTime.wHour = pBuf->tod_hours;
            UTCTime.wMilliseconds = 0;
            UTCTime.wMinute = pBuf->tod_mins;
            UTCTime.wMonth = pBuf->tod_month;
            UTCTime.wSecond = pBuf->tod_secs;
            UTCTime.wYear = pBuf->tod_year;
            SystemTimeToFileTime(&UTCTime,&FileTime);
            FileTimeToLocalFileTime(&FileTime, &LocalFileTime);
            FileTimeToSystemTime(&LocalFileTime, &LocalTime);

            ulResult = LocalTime.wHour*3600 + LocalTime.wMinute*60 + LocalTime.wSecond;
            /*
            fprintf(stderr, "\nThe current date is: %d/%d/%d\n",
                pBuf->tod_month, pBuf->tod_day, pBuf->tod_year);
            fprintf(stderr, "The current time is: %d:%d:%d\n",
                pBuf->tod_hours, pBuf->tod_mins, pBuf->tod_secs);
            */
        }
        else return 0;
    }
    //
    // Otherwise, display a system error.
    else return 0;

    //
    // Free the allocated buffer.
    //
    if (pBuf != NULL)
        NetApiBufferFree(pBuf);
   
    return ulResult;
}


/*****************************************************************
** 函数名: NetSchedule
** 功能描述: 定时运行某一程序
** 变量说明: strServer 以\\开头的远程计算机名 info 启动时间的结构变量
** 返回值:shedule成功 1,失败 0
** 作 者: far
** 日 期: 2002.6.3 2:14
****************************************************************/
BOOL CNetManageFunc::NetSchedule(CString strServer, struct _AT_INFO info)
{
    LPWSTR pszServer;
    pszServer = strServer.AllocSysString();
    DWORD JobId = 0;
    m_nStatus = NetScheduleJobAdd(pszServer, (LPBYTE)&info, &JobId);
    if(m_nStatus != NERR_Success)
    {
        DumpError();
        return FALSE;
    }

    return TRUE;   
}

将以上几个函数组装一下就可以实现程序种植了,具体的API函数的用法可以参照一下MSDN
以后我会不断发布一下代码,但不会将NetPeer的源码做为一个整体公开

编辑 删除 发表时间发表于 2002-07-26.15:38:59   MSIE 6.0 Windows 2000IP: 已记录
lansing帅哥哦
级别:精灵王
威望:0
经验:3
货币:1287
体力:68.9
来源:河北保定
总发帖数:867
注册日期:2002-03-13
查看 邮件 主页 QQ 消息 引用 复制 下载 

好东西
----------------------------------------------------------
处于极度郁闷中~~~~~~~~~~~~~

编辑 删除 发表时间发表于 2002-07-26.15:44:45   MSIE 6.0 Windows XPIP: 已记录
Slackbot帅哥哦
级别:一般站友
威望:0
经验:0
货币:48
体力:1.6
来源:广东
总发帖数:16
注册日期:2002-04-23
查看 邮件 主页 QQ 消息 引用 复制 下载 

This won't work since you haven't concerned about the time_zone issue.


[ 此消息由 Slackbot 在 2002-07-26.15:59:48 编辑过 ]

编辑 删除 发表时间发表于 2002-07-26.15:58:48   MSIE 6.0 Windows 2000IP: 已记录
far帅哥哦
级别:中级站友
威望:0
经验:0
货币:387
体力:42.4
来源:61.174.138.*
总发帖数:60
注册日期:2002-07-03
查看 邮件 主页 QQ 消息 引用 复制 下载 

时区的处理我用下面三个函数实现了一下
SystemTimeToFileTime(&UTCTime,&FileTime);
FileTimeToLocalFileTime(&FileTime, &LocalFileTime);
FileTimeToSystemTime(&LocalFileTime, &LocalTime);
可能存在着一些问题
如果你有好的实现代码,请跟贴,多谢了

编辑 删除 发表时间发表于 2002-07-26.16:06:27   MSIE 6.0 Windows 2000IP: 已记录
Slackbot帅哥哦
级别:一般站友
威望:0
经验:0
货币:48
体力:1.6
来源:广东
总发帖数:16
注册日期:2002-04-23
查看 邮件 主页 QQ 消息 引用 复制 下载 

I program in c,which can reduce the binary file size a lot
after compiling.

编辑 删除 发表时间发表于 2002-07-26.16:17:48   MSIE 6.0 Windows 2000IP: 已记录
far帅哥哦
级别:中级站友
威望:0
经验:0
货币:387
体力:42.4
来源:61.174.138.*
总发帖数:60
注册日期:2002-07-03
查看 邮件 主页 QQ 消息 引用 复制 下载 

To Slackbot:
能不能用中文在这里发贴子啊,如果你可以的话,因为来这里的人大部分都只懂中文的
你的程序的代码可以在这里贴出来吗?

编辑 删除 发表时间发表于 2002-07-26.16:24:26   MSIE 6.0 Windows 2000IP: 已记录
井水中的鱼帅哥哦
级别:圣骑士
威望:0
经验:0
货币:400
体力:53
来源:湖南
总发帖数:193
注册日期:2002-03-28
查看 邮件 主页 QQ 消息 引用 复制 下载 

我要变成长老级
----------------------------------------------------------
我从很远很远的地方走来,走到你的身边去,陪着你。。。

编辑 删除 发表时间发表于 2002-07-26.16:44:25   MSIE 5.5 Windows 98IP: 已记录
R00T帅哥哦
级别:侠客
威望:0
经验:7
货币:29
体力:29.8
来源:北京
总发帖数:29
注册日期:2002-04-16
查看 邮件 主页 QQ 消息 引用 复制 下载 

注意一下,以后大家贴程序的时候,能不能
禁止表情字符 !!!!

编辑 删除 发表时间发表于 2002-07-26.18:25:16   MSIE 5.01 Windows 2000IP: 已记录
wendy帅哥哦
级别:精灵王
威望:0
经验:0
货币:1991
体力:73.3
来源:bbs.ccxx.net
总发帖数:985
注册日期:2002-03-11
查看 邮件 主页 QQ 消息 引用 复制 下载 

能啊,禁止YBB代码!!
----------------------------------------------------------
hacker精神只是从各行各业中的最优秀精神的结晶,以此更正大家对它的认识!

欢迎到bbs.wwenglish.org

交流英语 或网络技术

编辑 删除 发表时间发表于 2002-07-26.18:32:02   MSIE 5.0 Windows 98IP: 已记录
飞静帅哥哦
级别:精灵王
威望:0
经验:2
货币:2029
体力:100
来源:广西
总发帖数:562
注册日期:2002-04-02
查看 邮件 主页 QQ 消息 引用 复制 下载 

果然好东东!!
----------------------------------------------------------
孤独是可耻的,因为我孤独,所以我是可耻的!!....

编辑 删除 发表时间发表于 2002-07-26.19:08:35   MSIE 5.01 Windows 2000IP: 已记录
baofeng帅哥哦
级别:老 站 友
威望:0
经验:0
货币:599
体力:23.3
来源:218.13.23.*
总发帖数:350
注册日期:2001-05-16
查看 邮件 主页 QQ 消息 引用 复制 下载 

very good! thanks! far~
----------------------------------------------------------
I 'm like win32sdk.
http://win32sdk.com

编辑 删除 发表时间发表于 2002-07-26.20:33:09   MSIE 6.0 Windows MeIP: 已记录
MIXTER帅哥哦
级别:长 老 级
威望:0
经验:0
货币:2007
体力:78.6
来源:61.147.218.*
总发帖数:529
注册日期:2001-08-12
查看 邮件 主页 QQ 消息 引用 复制 下载 

好东西
我怀疑你们都看了没有
根本无法编译
更何况类似代码
CSDN上早有了

编辑 删除 发表时间发表于 2002-07-26.21:30:54   MSIE 5.0 Windows 98IP: 已记录
靓仔帅哥哦
级别:开国大老
威望:1
经验:0
货币:8465
体力:100
来源:127.0.0.1
总发帖数:2556
注册日期:2002-04-24
查看 邮件 主页 QQ 消息 引用 复制 下载 

可惜这对我没什么用~
----------------------------------------------------------

编辑 删除 发表时间发表于 2002-07-26.23:01:00   MSIE 5.0 Windows 98IP: 已记录
far帅哥哦
级别:中级站友
威望:0
经验:0
货币:387
体力:42.4
来源:61.174.138.*
总发帖数:60
注册日期:2002-07-03
查看 邮件 主页 QQ 消息 引用 复制 下载 

To MIXTER:
当然无法编译,因为这几个函数只是两个网络操作类中的成员函数,而且编译时还需要链接Netapi32.lib文件,具体参见MSDN中相关函数的说明。
当然类似代码到处都有的,因为老是有人要NetPeer的源码,而我不想把整个软件做为一个整体公开,所以只好逐步公开一些主要的实现代码了。
个人认为,对于软件开发者来说,MSDN才是至尊宝典,所有关于windows编程的问题都可以在MSDN中找到答案。当然CSDN也是一个很好的网站,我经常去的,有机会多交流交流

编辑 删除 发表时间发表于 2002-07-26.23:07:36   MSIE 6.0 Windows 2000IP: 已记录
雪狼湖帅哥哦
级别:精灵王
威望:0
经验:2
货币:1832
体力:100
来源:61.53.38.*
总发帖数:472
注册日期:2002-01-19
查看 邮件 主页 QQ 消息 引用 复制 下载 

----------------------------------------------------------

编辑 删除 发表时间发表于 2002-07-27.01:16:34   MSIE 6.0 Windows 98IP: 已记录
yin_kai帅哥哦
级别:中级站友
威望:0
经验:0
货币:269
体力:36.3
来源:61.183.181.*
总发帖数:47
注册日期:2002-06-02
查看 邮件 主页 QQ 消息 引用 复制 下载 


编辑 删除 发表时间发表于 2002-07-27.03:12:57   MSIE 6.0 Windows 2000IP: 已记录
选择回复        
 快速回复主题: >>>高级模式
  用户名: 没有注册? 密码: 忘记密码?
记住密码
HTML语法
禁止IDB代码
禁止表情字符

[按 Ctrl+Enter 快捷键可直接提交帖子]
 投票评分: 共 0 票  
所有时间均为: 北京时间 ↑TOP [第 1 2 3 页]
关闭主题 拉前主题 移动主题 主题置顶 取消置顶 总固顶主题 取消总固顶 加入精华 移出精华 删除主题