我的VB.NET Windows服务未启用UAC启动

我的VB.NET Windows服务未启用UAC启动,vb.net,service,Vb.net,Service,我是VS.NET新手(但VB6经验丰富)。我正在编写一个VB.NET(2010)应用程序,它既有GUI又有后台Windows服务。我的服务是按照所有典型的“操作”文章创建的 我的Windows服务使用installutil和VS命令提示符安装得很好,但如果不关闭UAC,我无法让服务真正启动。如果UAC保持打开状态,我会得到可怕的“错误740:请求的操作需要提升” 嗯 此服务安装为LocalSystem,这是任何系统上绝对最高权限的访问,甚至高于Admin。究竟为什么需要进一步提升?即使为提升编辑

我是VS.NET新手(但VB6经验丰富)。我正在编写一个VB.NET(2010)应用程序,它既有GUI又有后台Windows服务。我的服务是按照所有典型的“操作”文章创建的

我的Windows服务使用installutil和VS命令提示符安装得很好,但如果不关闭UAC,我无法让服务真正启动。如果UAC保持打开状态,我会得到可怕的“错误740:请求的操作需要提升”

此服务安装为LocalSystem,这是任何系统上绝对最高权限的访问,甚至高于Admin。究竟为什么需要进一步提升?即使为提升编辑manifest/config也不能消除这个错误,这让我觉得这一切都很糟糕

提示:同样,如果UAC被禁用,服务会立即启动,这本不需要

我读过Windows服务“操作”文章,并尽我所能地关注它们,但没有一篇文章提到过这个问题。我显然不能强迫我的用户关闭UAC,所以一定有什么我忽略了


在这件事上真的非常需要帮助,我感谢任何能帮助我的人

假设您的服务有安装程序,您可以将服务设置为在LocalService帐户下运行。这通常具有所需的提升权限

例如:

yourProcessInstaller.Account = System.ServiceProcess.ServiceAccount.LocalService
yourProcessInstaller.UserName = Nothing
yourProcessInstaller.Password = Nothing
如果这还不够,您可以提示安装用户指定其应在其下运行的用户的凭据:

yourProcessInstaller.Account = System.ServiceProcess.ServiceAccount.User
yourProcessInstaller.UserName = Nothing
yourProcessInstaller.Password = Nothing
请注意,在后一种情况下,用户在输入其应运行的用户时必须指定计算机名


示例:MyComputerName\MyUserName

在安装程序的属性中,我确实将其设置为LocalService。它安装得很好,我在VStudio命令提示符中使用installutil来完成。没问题。还编辑了提升的manifest/config(是否适用于服务?),我不希望用户必须输入自己的cred才能使其工作,尽管他们可以随时更改服务(如果他们选择的话)。我只想让它作为LocalService运行,而不需要用户经历任何麻烦。上面的硬代码是否与在IDE中使用相同的可单击选择选项不同?如果选择LocalService,是否仍需要对manifest/config进行更改?或者,当.NET中的服务设置为LocalService时,是否会自动处理该服务的提升?我必须解决这个问题,因为我不能强迫我的用户禁用UAC。