使用C#创建sysprep提供程序

时间:2013-06-30 10:54:01

标签: c# windows

我的应用程序需要编写一个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 ++编写提供程序(我不知道的语言)。

非常感谢任何建议!

1 个答案:

答案 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