0

我有一个以登录用户(本地管理员)身份运行的 Windows 服务。在启动期间,我收到一条消息:“无法生成临时类(结果 = 1)”。所以,我去了 windows/temp 文件夹,UAC 提示我提升我的权限——在我这样做之后,服务会正常启动。那么,我该如何从 Windows 服务的角度来处理这个 UAC 提示呢?

谢谢!

4

3 回答 3

3

关于最初的问题 - 除了解决您的症状的事件顺序的具体问题。

当属于本地管理员组成员的用户登录到 UAC 下的计算机时,将授予两个安全令牌 - 一个具有有限权限,一个具有更高权限集。默认情况下,使用较低的权限 - 除非主动指定了较高的权限。指定的主要方式是通过 UI - 正如您所做的那样。另一种方法是使用应用程序清单:指定操作系统如何处理此应用程序的 XML 文件。清单文件应与可执行文件放在同一文件夹中,并使用以下格式命名:“my_application_name.exe.manifest”

清单中的 XML 如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" name="MY_APPLICATION_NAME" type="win32"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator"/> </requestedPrivileges> </security> </trustInfo> </assembly>
我相信你可以通过谷歌搜索“UAC Manifest”找到更多具体信息......

希望这是有用的...

于 2009-08-29T23:39:47.647 回答
0

即使我仍然不知道如何回答我的问题,我也解决了我的问题。基本上,我的服务从引导过程继承了临时目录,所以我将其更改为使用当前用户的临时目录。您将需要按照以下方式做一些事情:

myProcess.StartInfo.EnvironmentVariables.Add("TempPath", "C:\Temp")

于 2009-01-31T00:43:56.030 回答
0

为什么不让 Windows 服务作为 LocalSystem 运行?

于 2009-02-04T19:27:33.967 回答