gpt4 book ai didi

c# - 如何从 Windows 服务调用我的 dll?

转载 作者:可可西里 更新时间:2023-11-01 14:52:06 28 4
gpt4 key购买 nike

我创建了一个 c# 库文件,它将转到本地路径,例如 (c:\test.txt) 找到文件并上传到 ftp 服务器。

为了测试,我只是从控制台应用程序调用了 dll,但我如何才能作为 Windows 服务运行,它会连续运行?

我想运行这个 dll 作为服务来监控 c:\文件夹,如果有任何文件像“test.txt”然后上传。

提前致谢

最佳答案

当您使用它的函数时,DLL 被“调用”。因此,如果您有一个 DLL 项目,其中包含一些类和类中的一些函数,只需 add the DLL as a reference到您的服务项目并调用适当的函数。

您可能想使用 this library用于创建 Windows 服务。原因是,当您使用 Visual Studio 模板构建 Windows 服务时,生成的构建并没有真正“运行”。生成的构建是必须安装的 Windows 服务,然后 started using the Services Snap-In .但是使用 Hoytsoft 的自定义 Windows 服务库,您的服务将自动安装并自动启动 - 就像常规的 Windows 窗体应用程序一样。

为确保您的服务在启动时运行,请记住将您的服务类配置为自动启动(如他的 CodeProject 文章中所述)。为了确保您的服务持续运行,即使进程被终止,您可以添加这个方便的注册表 hack,它将重新启动服务标志设置为立即重新启动。

这个注册表黑客 == enter image description here

注册表破解:

Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Services\<YOUR_SERVICE_NAME_HERE>", true);
key.SetValue("FailureActions", new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, Microsoft.Win32.RegistryValueKind.Binary);
key.Close();

了解任何管理用户仍然可以通过简单地禁用您的服务来终止您的进程。

关于c# - 如何从 Windows 服务调用我的 dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9440109/

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