c# 中调用advapi32.dll中的 RegCreateKeyEx如何定义

cz_stu1 2008-07-10 02:23:48
能不能给个c#的实际例子?谢了
...全文
536 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Macosx 2008-07-10
  • 打赏
  • 举报
回复
regData应该是byte[]
cz_stu1 2008-07-10
  • 打赏
  • 举报
回复
我是这样定义的,可就是取不出值,
[DllImport("advapi32.dll", EntryPoint = "RegQueryValueExA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
public static extern int RegQueryStringValue(int hKey, string lpValueName, int lpReserved, ref int lpType,string lpData, ref int lpcbData);

string regData = "";
regDataLength = 255;
success = RegQueryStringValue(hKey, value, 0, ref regType, regData, ref regDataLength);
if (success == 0)
functionReturnValue = regData;
帮看那错了
cz_stu1 2008-07-10
  • 打赏
  • 举报
回复
还有一个帮看一下,我是这样定义的,可就是取不出值,
[DllImport("advapi32.dll", EntryPoint = "RegQueryValueExA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
public static extern int RegQueryStringValue(int hKey, string lpValueName, int lpReserved, ref int lpType,string lpData, ref int lpcbData);

string regData = "";
regDataLength = 255;
success = RegQueryStringValue(hKey, value, 0, ref regType, regData, ref regDataLength);
if (success == 0)
functionReturnValue = regData;
帮看那错了
Macosx 2008-07-10
  • 打赏
  • 举报
回复
这是用Reflector搞出来的
[DllImport("advapi32.dll", CharSet=CharSet.Auto)]
internal static extern int RegCreateKeyEx(SafeRegistryHandle hKey, string lpSubKey, int Reserved, string lpClass, int dwOptions, int samDesigner, SECURITY_ATTRIBUTES lpSecurityAttributes, out SafeRegistryHandle hkResult, out int lpdwDisposition);

需要把SafeRegistryHandle换成IntPtr

[StructLayout(LayoutKind.Sequential)]
internal class SECURITY_ATTRIBUTES
{
internal int nLength;
internal unsafe byte* pSecurityDescriptor = null;
internal int bInheritHandle;
}



ericzhangbo1982111 2008-07-10
  • 打赏
  • 举报
回复
// RegQueryValueEx
//

[System.Runtime.InteropServices.DllImport("coredll.dll")]
private unsafe static extern int RegQueryValueEx(
uint hKey,
string lpValueName,
uint lpReserved,
out uint lpType,
byte * lpData,
ref uint lpcbData
);


//
// RegOpenKeyEx
//
System.Runtime.InteropServices.DllImport("coredll.dll")]
private static extern int RegOpenKeyEx(
uint hKey,
string lpSubKey,
uint ulOptions,
uint samDesired,
ref uint phkResult
);



private static string GetStringValue(uint Key, string Name)
{
uint buflen = 0;
uint type = 0;
char []str = null;
unsafe
{
//Get the length of the value:
int r = RegQueryValueEx(Key,Name,0,out type,null,ref buflen);
if (type!=(uint)RegType.REG_SZ) throw new Exception ("The key is not of string value");

//Create a buffer for the value:
byte[] rez_buf = new byte ;

//Retrieve the value to the buffer
fixed(byte *charpointer=&rez_buf[0])
{
int rez = RegQueryValueEx(Key,Name,0,out type,charpointer,ref buflen);
if (rez != 0) throw new Exception ("Can't get value");
}

str = new char ;
for (int i=0; i<buflen; i++)
str[i] = (char)rez_buf[i];

}
return new string (str);
}


这是在mobile5.0上运行的

把coredll改掉
我还用到了unsafe
你也可以不用。
pupo 2008-07-10
  • 打赏
  • 举报
回复
[DllImport("advapi32.dll", EntryPoint="RegCreateKeyEx")]
public static extern int RegCreateKeyEx (
int hKey,
string lpSubKey,
int Reserved,
string lpClass,
int dwOptions,
int samDesired,
ref SECURITY_ATTRIBUTES lpSecurityAttributes,
ref int phkResult,
ref int lpdwDisposition
);

[StructLayout(LayoutKind.Sequential)]
public struct SECURITY_ATTRIBUTES {
public int nLength;
public int lpSecurityDescriptor;
public int bInheritHandle;
}
ericzhangbo1982111 2008-07-10
  • 打赏
  • 举报
回复
[System.Runtime.InteropServices.DllImport("advapi32.dll")]
private static extern int RegCreateKeyEx(
uint hKey,
string lpSubKey,
uint Reserved,
string lpClass,
uint dwOptions,
uint samDesired,
uint lpSecurityAttributes,
ref uint phkResult,
ref uint lpdwDisposition
);
内容概要:本文针对高渗透率分布式光伏与储能变流器接入配电网所带来的运行挑战,深入研究了传统跟网型(GFL)逆变器在电网故障、弱电网及孤岛工况下易失稳脱网,以及构网型(GFM)虚拟同步发电机(VSG)逆变器在并网状态下缺乏同步调节能力的技术瓶颈,提出了一种可实现GFL与GFM双向平滑切换的先进控制策略。研究首先构建了GFL与GFM共用的硬件平台与内环控制基础,继而系统性地设计了基于关键电气量实时监测的切换判据、精确的双向切换时序逻辑,并创新性地引入了过渡过程的平滑抑制策略,以有效抑制切换瞬间的有功功率冲击、电压闪变与频率突变。全文在Matlab/Simulink环境搭建了完整的仿真模型,通过对并网转孤岛、孤岛转并网等多种工况的动态仿真,全面验证了所提策略的有效性,结果表明该方法能确保系统在模式切换过程电压、电流与频率的平稳过渡,显著提升了微电网在复杂运行条件下的韧性、稳定性与供电可靠性。; 适合人群:从事电力电子、新能源并网、微电网控制、智能配电网等领域的高校研究生、科研院所研究人员及电力系统相关企业的工程技术人员。; 使用场景及目标:① 解决高比例可再生能源接入引发的电网稳定性与电能质量问题;② 实现微电网在并网与孤岛两种运行模式间的无缝、可靠切换,保障重要负荷的不间断供电;③ 为构网型与跟网型逆变器的协同运行、新型电力系统构建提供先进的控制理论依据与可落地的技术解决方案。; 阅读建议:建议结合文提供的Simulink仿真模型进行深入学习,重点剖析切换逻辑模块的设计原理与参数整定方法,通过反复观察和分析不同工况下的仿真波形,深刻理解平滑切换过程的动态响应机理与控制思想。
内容概要:本文提出了一种基于粒子群算法(PSO)优化模糊C均值(FCM)聚类的居民用电行为分析方法,旨在解决传统FCM算法对初始聚类心敏感、易陷入局部最优解的问题。通过引入PSO算法全局寻优能力,优化FCM的初始聚类心选择,显著提升了聚类结果的准确性与稳定性。研究结合Matlab平台实现了算法仿真与实证分析,有效挖掘出居民用电负荷的典型模式,为电力系统的需求侧管理、精细化负荷预测及个性化用电服务提供了可靠的数据分析基础和技术支撑。; 适合人群:具备一定电力系统基础知识与Matlab编程能力,从事电力大数据分析、智能电网、负荷特性研究、需求响应等相关领域的科研人员、高校研究生及工程技术开发者。; 使用场景及目标:①应用于居民用电数据的聚类分析,识别不同用户的典型用电模式与行为特征;②优化传统FCM算法性能,提升聚类过程的鲁棒性与收敛效率;③为电力公司制定差异化电价策略、实施精准需求响应措施以及开展用户画像构建提供科学依据。; 阅读建议:读者应结合Matlab代码实现部分,深入理解PSO优化FCM的整体流程,重点关注适应度函数的设计原则、PSO关键参数(如惯性权重、学习因子)的设定及其对聚类效果的影响,并建议使用真实的居民用电数据集进行实验验证与参数调优,以充分掌握该方法的实际应用技巧。
内容概要:本文系统研究了可切换构网型(Grid-Forming)与跟网型(Grid-Following)逆变器在微电网运行的双向平滑切换控制策略,旨在解决孤岛与并网模式切换过程常见的频率、电压突变问题,提升系统稳定性与电能质量。研究融合事件触发机制与分布式协同控制理论,设计了高效的二次频率与电压恢复控制策略,并通过Simulink搭建完整的微电网仿真模型进行验证。文还深入探讨了通信优化、抗DoS攻击的弹性控制机制等关键技术,体现了对现代智能微电网在高可靠性、高灵活性运行方面的综合控制需求,适用于IEEE/SCI高水平期刊研究成果的复现与拓展。; 适合人群:具备电力电子、自动控制或微电网相关专业知识,从事新能源发电、智能电网、分布式能源系统等方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 深入理解构网型与跟网型逆变器的工作原理及其模式切换的技术难点;② 掌握基于事件触发与分布式协同的微电网二次控制策略设计方法;③ 在Simulink环境实现微电网多运行模式的建模与仿真,支撑学术论文复现、科研课题推进或实际工程项目开发; 阅读建议:建议结合文提及的IEEE/SCI顶刊复现案例,循序渐进地学习控制策略的设计逻辑与仿真实现细节,重点关注模式切换的触发条件设定、控制器参数整定及系统稳定性分析,同时可利用提供的网盘资源获取完整仿真模型与代码,以加快学习与研究进程。

111,129

社区成员

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

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

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