我的应用程序需要编写一个regkey,如果它安装的Windows机器运行SysPrep。
根据http://technet.microsoft.com/en-us/library/ee676646(WS.10).aspx#SysprepDevGuide_RegisteringYourSysprepProvider,“SysPrep Provider”必须是DLL。
由于我的应用程序是用C#编写的(我是初学者),我似乎无法导出一个可以在使用C#时通过RunDLL32运行的函数。虽然我很容易创建一个简单的控制台应用程序,但看起来SysPrep只能接受DLL而不是可执行程序。有没有办法可以用C#创建一个sysprep提供程序,或者我必须用C ++编写提供程序(我不知道的语言)。
非常感谢任何建议!
答案 0 :(得分:1)
这样做的通常方法是编写一个调用托管dll的C ++ / CLI包装器(混合模式dll),但是如果你想避免使用C ++,那么一个名叫Robert Giesecke的人就会出现一个用于导出的库托管函数允许它们像常规C函数一样被调用。
检查出来:https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports
显然这会给你一个DllExport属性,它看起来像DllImport一样容易使用:
class Test
{
[DllExport( "add", CallingConvention = CallingConvention.Cdecl )]
public static int TestExport( int left, int right )
{
return left + right;
}
}
可以在此处找到下载和更多信息:https://nuget.org/packages/UnmanagedExports