今天,同事跟我讲,写的windows服务读取不了注册表的内容,什么代码没有运行?说什么权限不够,还是什么问题,要帮他看看。
不太习惯在别人的代码下面去检查自己也不太熟的问题,干脆自己重新建个项目,一步步的设置。(新手可以参考c#创建windows服务入门教程实例)
一开始我也怀疑是权限的问题,在程序下面设置了UAC的权限为管理员(如何设置,请参考c#通过app.manifest使程序以管理员身份运行)
在服务的启动项处,写了一个读取注册表下面某个路径的值,然后写到到服务程序所在路径下面的一个日志文件中。
代码写完了,开始进行运行调试,为了模拟真实的运行环境,直接通过系统下面的程序来运行服务如下
用.net创建的安装Windows服务,可以直接用到一个名为InstallUtil.exe的命令行工具进行安装
安装命令:
installutil 服务名称(程序)
卸载命令:
installut

本文描述了作者在尝试帮助同事解决C#编写的服务无法读取注册表内容的问题。首先考虑了权限问题,通过设置UAC权限和使用InstallUtil.exe安装服务,但服务启动后仍无法读取。最终发现是32位程序在64位系统上读取注册表位置不正确的问题,修正后解决了问题。

223

被折叠的 条评论
为什么被折叠?



