C++-如何判断当前程序是由Windows服务启动还是由用户启动?

发布于 2016-10-29 02:12:23 字数 155 浏览 1192 评论 2

当我用windows service启动一个应用程序时,它的临时文件夹路径会由原来的: C:Documents and SettingsUsersApplication Data变为 C:windowssystem32configsystemprofile, 我要怎样才能重定位到用户临时文件夹.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瑾兮 2017-09-28 11:22:55

临时文件的变动是因为服务的启动账号是LocalSystem而不是adminisatror;
可以从下面几个方面来定位问题:
一、将服务的启动账号改为adminisatror;
二、取环境变量路径的路径,看路径是什么;从而确定是否是因为环境变量导致的;

Environment.GetEnvironmentVariable("TEMP");
Environment.GetEnvironmentVariable("TMP");

三、看看你的创建临时目录的代码、建议用相对路径;
参考资料:http://msdn.microsoft.com/en-us/library/system.environment.aspx

想挽留 2016-11-19 06:52:25

.net里面编写Windows服务很这容易,它与普通的windows程序没什么不一样,

Windows服务的启动代码为:
ServiceBase.Run(new ServiceBase());
一般Windows程序的启动代码为:
Application.Run(new Form());

其它地方都一样,除了服务没有UI外(以特殊方式可以产生与用户交互的UI)。

如果想判断启动的方式话,建议你可以从
ServiceBase.Run方法或者Application.Run方法去排除其中的一种
鉴于这种思路你可以参考一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文