想写个游戏监控软件?

roopeman 2005-11-21 11:24:51
1)监控processes
2)找到processes的文件名.
3)分析文件属性,特别是Other version information
4)判断是Excel程序,winmine程序,还是其它公司的程序
5)把不是公司规定的标准程序出个report.
欢迎拍砖,指点它的可行性!
...全文
113 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
RSHY 2005-11-21
  • 打赏
  • 举报
回复
#region 处理服务(Service)的内部方法
public DataTable GetServices()
{

DataTable servicedt=new DataTable("service");
servicedt.Columns.Add(new DataColumn("svc_mc",System.Type.GetType("System.String")));
servicedt.Columns.Add(new DataColumn("svc_qdms",System.Type.GetType("System.String")));
servicedt.Columns.Add(new DataColumn("svc_dqzt",System.Type.GetType("System.String")));
servicedt.Columns.Add(new DataColumn("svc_dlsf",System.Type.GetType("System.String")));


ManagementObjectCollection queryCollection;
string[] lvData = new string[4];

try
{
queryCollection = getServiceCollection("SELECT * FROM Win32_Service");
foreach ( ManagementObject mo in queryCollection)
{
//create child node for operating system
lvData[0] = mo["Name"].ToString();
switch (mo["StartMode"].ToString())
{
case "Manual" :lvData[1] ="手动"; break;
case "Auto" : lvData[1] ="自动";break;
case "Disabled" : lvData[1] ="已禁用"; break;

}

if (mo["Started"].Equals(true))
lvData[2] = "已启动";
else
lvData[2] = "";
lvData[3] = mo["StartName"].ToString();

DataRow addnewrow=servicedt.NewRow();
addnewrow["svc_mc"]=lvData[0];
addnewrow["svc_qdms"]=lvData[1];
addnewrow["svc_dqzt"]=lvData[2];
addnewrow["svc_dlsf"]=lvData[3];

servicedt.Rows.Add(addnewrow);
//往返回的DataTable里面插入数据行
}
}
catch (Exception e)
{
throw new System.Exception("Error:" +e);

}
return servicedt;
}

private ManagementObjectCollection getServiceCollection(string stringQuery)
{
ManagementObjectSearcher query;
ManagementObjectCollection queryCollection = null;
System.Management.ObjectQuery oq;
string stringMachineName = "127.0.0.1";

//Connect to the remote computer
ConnectionOptions co = new ConnectionOptions();


//Point to machine
System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\" + stringMachineName + "\\root\\cimv2", co);


//Query remote computer across the connection
oq = new System.Management.ObjectQuery(stringQuery);
query = new ManagementObjectSearcher(ms,oq);

try
{
queryCollection = query.Get();
}
catch (Exception e1)
{
}

return queryCollection;

}
#endregion //处理服务(Service)的内部方法
RSHY 2005-11-21
  • 打赏
  • 举报
回复
WMI可获取的详细信息看MSDN2003中的:

ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/wmisdk/wmi/win32_classes.htm
RSHY 2005-11-21
  • 打赏
  • 举报
回复
示例代码:
先引用“System.Managerment“

int drvCount=1; //设备计数器
string temp="";
ManagementObjectSearcher query ;
ManagementObjectCollection queryCollection;

#region 软盘控制器
query = new ManagementObjectSearcher("SELECT * FROM Win32_FloppyDrive");
queryCollection = query.Get();

foreach ( ManagementObject mo in queryCollection)
{
DataRow addnewrow=driverdt.NewRow();

//驱动器名
addnewrow["hard_sbbh"]=drvCount;
addnewrow["hard_sbxh"]=mo["Caption"];
addnewrow["hard_sblx"]="软盘控制器";
addnewrow["hard_xxsm"]="DeviceID:" + mo["DeviceID"];
driverdt.Rows.Add(addnewrow);

drvCount+=1;
}
#endregion
roopeman 2005-11-21
  • 打赏
  • 举报
回复
To RSHY(任朔),用dotNET中的WMI?没用过哦,我只用过Vbscript写些简单的WMI,http://roopeman.cnblogs.com,请问哪有dotnet的WMI详细介绍?
asuan 2005-11-21
  • 打赏
  • 举报
回复
个人认为可行.
RSHY 2005-11-21
  • 打赏
  • 举报
回复
你可以只安装在服务器上,监控局域网内所有机器的进程,不过前提是你要知道每台机器的管理员密码。

用dotNET中的WMI很容易做到

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧