Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Windows启动时运行程序_C#_Wcf_Startup_Registrykey - Fatal编程技术网

C# 在Windows启动时运行程序

C# 在Windows启动时运行程序,c#,wcf,startup,registrykey,C#,Wcf,Startup,Registrykey,我在想是否有人能向我解释一下如何让我的程序在启动时运行? 我的程序是一个C#WCF,带有一个必须在服务器上运行的小WPF UI,我需要确保该程序在服务器重新启动时或出于任何其他原因启动 我环顾四周,似乎我必须使用注册表项,但我不熟悉如何使用注册表项,请有人向我解释一下如何使用此注册表项。我正在使用VS2010创建安装程序,并希望在安装时设置注册表项:) 另外,我不希望应用程序是Windows服务,也不能将其放在用户的启动文件夹中(因为如果服务器重新启动,没有人登录会怎么样?添加要运行的内容:

我在想是否有人能向我解释一下如何让我的程序在启动时运行? 我的程序是一个C#WCF,带有一个必须在服务器上运行的小WPF UI,我需要确保该程序在服务器重新启动时或出于任何其他原因启动

我环顾四周,似乎我必须使用注册表项,但我不熟悉如何使用注册表项,请有人向我解释一下如何使用此注册表项。我正在使用VS2010创建安装程序,并希望在安装时设置注册表项:)

另外,我不希望应用程序是Windows服务,也不能将其放在用户的启动文件夹中(因为如果服务器重新启动,没有人登录会怎么样?

添加要运行的内容:

更新:仔细考虑后,这可能对您没有帮助,因为您的方法似乎存在根本缺陷。仍然需要有人登录才能运行UI。这个解决方案怎么样:

将服务推回windows服务(正如其他人所建议的)。对于WPF UI块,将其与承载WCF服务的exe分离到自己的项目中。只需公开另一个服务端点契约,UI可以使用它来管理/监视服务

这为从不同的机器监控服务器打开了大门。此外,您不必担心多人同时登录服务器(在许多环境中可能出现这种情况)并使服务主机的多个实例旋转。

添加要运行的内容:

更新:仔细考虑后,这可能对您没有帮助,因为您的方法似乎存在根本缺陷。仍然需要有人登录才能运行UI。这个解决方案怎么样:

将服务推回windows服务(正如其他人所建议的)。对于WPF UI块,将其与承载WCF服务的exe分离到自己的项目中。只需公开另一个服务端点契约,UI可以使用它来管理/监视服务


这为从不同的机器监控服务器打开了大门。此外,您不必担心多人同时登录服务器(在许多环境中可能出现这种情况)并使服务主机的多个实例旋转。

这正是windows服务的用途。所以它回避了一个问题…为什么你不想使用windows服务?您可以在执行安装此程序时将此值写入注册表。@KirkWoll Windows服务和UI不是很好的组合。将UI exe放在启动注册表的某个位置可能是GUI的最佳选择。@kenny,我不知道。我同意你的UI部分,但是WCF服务,如果它们不打算在IIS中托管,应该在windows服务中托管。这正是windows服务的用途。所以它回避了一个问题…为什么你不想使用windows服务?您可以在执行安装此程序时将此值写入注册表。@KirkWoll Windows服务和UI不是很好的组合。将UI exe放在启动注册表的某个位置可能是GUI的最佳选择。@kenny,我不知道。我同意你的UI部分,但是WCF服务,如果它们不打算在IIS中托管,应该在windows服务中托管。
RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

rkApp.SetValue("MyApp", Application.ExecutablePath.ToString());