软件编好了,源程序要交付,但是其中有两个CPP要保密,因为是以前项目的成果。
现在我采用dll的方法,把那两个CPP文件变成DLL,然后调用,但是老板说要让只有我们的程序才能调用这两个DLL,而别人的程序不能调用。现在不知道该对这两个DLL做什么手脚才能达到老板的要求?因为其他的所有源程序要给对方,所以DLL里的函数定义和调用的源程序要完全公开的,所以只有改DLL内部函数了,怎么样才能使这两个DLL只能被我们的程序所调用?
盼解决办法。。

解决方案 »

  1.   

    在DLL_PROCESS_ATTACH的时候,晕,就是调用了也不会知道两个CPP里面写的是什么啊
      

  2.   

    要别人不能调用,就把DLL里的函数定义给封起来。把以前的成果做成DLL,然后做个新DLL来调用这个DLL,现在的源程序就调用这个新DLL,把以前的就封起来。
      

  3.   

    如何获取父进程的ID
    (hangwire发表于2001-12-26 17:00:47)   从所周知,在Windows NT/2000系统的API黑洞之一便是NTDLL.DLL,此DLL包含了许多未公开的API函数。本文将列举一、二,并用它们示范如何获取任何指定进程的父进程ID。
       NTDLL.DLL中有一个函数叫NtQueryInformationProcess,用它可以将指定类型的进程信息拷贝到某个缓冲。其原型如下:
    NTSYSAPI
    NTSTATUS
    NTAPI
    NtQueryInformationProcess (
    IN HANDLE ProcessHandle, // 进程句柄
    IN PROCESSINFOCLASS InformationClass, // 信息类型
    OUT PVOID ProcessInformation, // 缓冲指针
    IN ULONG ProcessInformationLength, // 以字节为单位的缓冲大小
    OUT PULONG ReturnLength OPTIONAL // 写入缓冲的字节数
    );
        第一个参数是希望操作的进程句柄,这个句柄必须以PROCESS_QUERY_INFORMATION模式存取。为了取得一个句柄,我们必须用OpenProcess函数:
    HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,dwProcessID);
        第二个参数是请求信息的类型,这个参数可以有许多个值,本文例子中将用ProcessBasicInformation (值为0)。
        因此,如果第二个参数是ProcessBasicInformation的话,则第三个参数必须为一个指针指向结构PROCESS_BASIC_INFORMATION:
    typedef struct
    {
          DWORD ExitStatus; // 接收进程终止状态
          DWORD PebBaseAddress; // 接收进程环境块地址
          DWORD AffinityMask; // 接收进程关联掩码
          DWORD BasePriority; // 接收进程的优先级类
          ULONG UniqueProcessId; // 接收进程ID
          ULONG InheritedFromUniqueProcessId; //接收父进程ID
    } PROCESS_BASIC_INFORMATION;   这个结构的最后一个参数是InheritedFromUniqueProcessId,它就是我们所要的东西。DWORD dwParentPID;
    LONG status;
    PROCESS_BASIC_INFORMATION pbi;status = NtQueryInformationProcess( hProcess,
    ProcessBasicInformation,
    (PVOID)&pbi,
    sizeof(PROCESS_BASIC_INFORMATION),
    NULL );if (!status)
    dwParentPID = pbi.InheritedFromUniqueProcessId;
      

  4.   

    EnochShen,再问一下,获得ID以后怎么判断是不是我的程序呢?