gpt4 book ai didi

c# - 为 .dll 生成初始化代码

转载 作者:可可西里 更新时间:2023-11-01 09:08:58 25 4
gpt4 key购买 nike

我最近听说 .dll 可以在加载后立即运行代码,例如,当加载引用 .dll 的应用程序时。尽管我自己做了一些测试并尝试在这里和在 Google 上寻找答案,但我无法找到某种方法来为 .dll 生成初始化方法。

我想知道当应用程序加载 .dll 时是否真的可以运行代码。

如果可以,我该怎么做?

最佳答案

警告(感谢 Ben Voigt 的捕获:)):下面的代码仅适用于 C# 保证生成的类 不会是 beforefieldinit 。但是使用 C++/CLI 应该不会那么容易:Managed C++ Static Constructor not called in .net4


所以正如我的评论中所述,您可以使用这样的东西:

using System;

class MyAwesomeLibrary
{
static MyAwesomeLibrary()
{
Console.WriteLine(string.Format("Hey {0} is using me!", Environment.UserName));
}

public static int GetTheAnswer()
{
return 42;
}
}

class Client
{
static void Main()
{
Console.WriteLine("The answer is: " + MyAwesomeLibrary.GetTheAnswer());
}
}

在静态构造函数中,您可以执行高级操作,例如检查注册表、与服务器通信...

如果你是坏人(或者只是一个想要保护自己权利的开发者/公司),你可以抛出一个异常:

throw new Exception("The library has not been correctly registered...");

这将导致 TypeInitializationException防止使用整个库类。

或者您可以实现一个CheckMe 方法并要求所有用户在使用该库之前调用它,甚至进行身份验证并获取他们每次使用某些东西时都会使用的安全 token ...

编辑:

无论您使用何种保护措施,坚定的攻击者都可以通过反编译库来绕过所有管道,因此如果可以的话,您也应该混淆您的库以(稍微)受到更多保护。

关于c# - 为 .dll 生成初始化代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17126779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com