0

如果安装它的 Windows 机器运行 SysPrep,我的应用程序需要编写一个 regkey。

根据http://technet.microsoft.com/en-us/library/ee676646(WS.10).aspx#SysprepDevGuide_RegisteringYourSysprepProvider,“SysPrep Provider”必须是一个 DLL。

由于我的应用程序是用 C# 编写的(我是一名初学者),因此在使用 C# 时,我似乎无法导出可以通过 RunDLL32 运行的函数。虽然创建一个简单的控制台应用程序对我来说非常容易,但 SysPrep 似乎只能接受一个 DLL,而不是一个可执行程序。有没有办法可以在 C# 中创建 sysprep 提供程序,或者我必须用 C++(我不知道的一种语言)编写提供程序。

任何意见是极大的赞赏!

4

1 回答 1

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

于 2013-06-30T13:24:30.713 回答