问题是这样的,我现在遇到一个这样的需求,希望能够用C#去对系统中的dll进行管理。包括实现对dll的注册,删除已注册的dll,返回系统中已经注册dll的列表等功能。我在网上找到了如何注册跟取消注册的代码,例如http://www.cnblogs.com/luckeryin/archive/2010/03/17/1687999.html,但是我想请教下高手,.net平台有没有提供一些方法或者一些类能够实现上述对dll管理的功能呢?或者有没有类似的资料呢?就像windows服务的话在ServiceProcess下有个GetServices()的方法就可以返回全部的服务信息,那对于dll的话有没有一个类似的方法可以返回所有已注册的dll的方法呢?有没有这样的API呢??希望大家能帮忙解决下~谢谢~
PS:如果需要调用API,请问调用的什么API??谢谢~
PS:如果需要调用API,请问调用的什么API??谢谢~
删除:System.Diagnostics.Process.Start("regsvr32", "/u "+pathdll);//注销DLL
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls]可以用RegistryKey类操作注册表1.读取指定名称的注册表的值
private string GetRegistData(string name)
{
string registData;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
RegistryKey aimdir = software.OpenSubKey("XXX",true);
registData = aimdir.GetValue(name).ToString();
return registData;
}
以上是读取的注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下的XXX目录中名称为name的注册表值; 2.向注册表中写数据
private void WTRegedit(string name,string tovalue)
{
RegistryKey hklm = Registry.LocalMachine;
RegistryKey software = hklm.OpenSubKey("SOFTWARE",true);
RegistryKey aimdir = software.CreateSubKey("XXX");
aimdir.SetValue(name,tovalue);
}
以上是在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下新建XXX目录并在此目录下创建名称为name值为tovalue的注册表项; 3.删除注册表中指定的注册表项
private void DeleteRegist(string name)
{
string[] aimnames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
RegistryKey aimdir = software.OpenSubKey("XXX",true);
aimnames = aimdir.GetSubKeyNames();
foreach(string aimKey in aimnames)
{
if(aimKey == name)
aimdir.DeleteSubKeyTree(name);
}
}
以上是在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下XXX目录中删除名称为name注册表项; 4.判断指定注册表项是否存在
private bool IsRegeditExit(string name)
{
bool _exit = false;
string[] subkeyNames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
RegistryKey aimdir = software.OpenSubKey("XXX",true);
subkeyNames = aimdir.GetSubKeyNames();
foreach(string keyName in subkeyNames)
{
if(keyName == name)
{
_exit = true;
return _exit;
}
}
return _exit;
}
http://www.cnblogs.com/hanfeng/archive/2005/03/03/112246.html