其实我是相当希望您能答上来的,因为我答不上来,呵呵。C#中与运行中的进程和线程相关的,并且是每个进程线程都不同的东西有哪些,尽量全一些,请把这些东西列一下,并作出详细解释。比如:已分配给他的内存大小是不是固有属性,已请求的最大虚拟内存量是否为一特性。等等,就是能不能找出该运行程序的进程、线程的特有属性。我想找出一些特性看能不能唯一的区分一个软件!

解决方案 »

  1.   

    呵呵,问问题也问不到点子上,还什么“C#中关于进程、线程的基本知识”先获取程序的进程句柄,再通过进程句柄,你可以获取很多很多的东西,如:进程加载的主模块和模块、线程数及属性、控件、控件类型、程序窗口标题等等。详见《程序员秘书》--源代码--进程中,“鼠标获取窗口信息”、“系统进程管理”等等http://www.psec.net.cn
      

  2.   

    C#的编译器是用C++写的,内存方面,请用C++来解释
      

  3.   

    "能不能唯一的区分一个软件!" 是啥意思? 你是说想识别两个正在运行的进程的代码是否来自同一个Assembly吗?
      

  4.   

    "能不能唯一的区分一个软件!" 是啥意思? 没有必要完全不一样,你说的对,判断“否来自同一个Assembly”是一个方法,只要能证明这个软件的骨架是我的就可以了。
      

  5.   

    如果你觉得俺的方法可取,就再给你一点儿代码,是关于如何去到某个进程所运行的.exe和.dll的: System.Diagnostics.Process myProcess = System.Diagnostics.Process.GetProcessById(processID);
                    ProcessModule myProcessModule;                ProcessModuleCollection myProcessModuleCollection = myProcess.Modules;
                    Console.WriteLine("Properties of the modules  associated are:");
                    // Display the properties of each of the modules.
                    for (int i = 0; i < myProcessModuleCollection.Count; i++)
                    {
                        myProcessModule = myProcessModuleCollection[i];
                        Console.WriteLine("The moduleName is "
                           + myProcessModule.ModuleName);
                        Console.WriteLine("The " + myProcessModule.ModuleName + "'s base address is: "
                           + myProcessModule.BaseAddress);
                        Console.WriteLine("The " + myProcessModule.ModuleName + "'s Entry point address is: "
                           + myProcessModule.EntryPointAddress);
                        Console.WriteLine("The " + myProcessModule.ModuleName + "'s File name is: "
                           + myProcessModule.FileName);
                    }
      

  6.   

    这些东西我以前在VS.NET自带的msdn上面都学习过了,还是非常感谢!没有办法,要写这方面的论文,所以想找出每个软件或者程序集特有的东西来作为自己软件的标记。研究吗,蛮难搞。