C++-如何判断当前程序是由Windows服务启动还是由用户启动?
当我用windows service启动一个应用程序时,它的临时文件夹路径会由原来的: C:Documents and SettingsUsersApplication Data变为 C:windowssystem32configsystemprofile, 我要怎样才能重定位到用户临时文件夹.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
临时文件的变动是因为服务的启动账号是LocalSystem而不是adminisatror;
可以从下面几个方面来定位问题:
一、将服务的启动账号改为adminisatror;
二、取环境变量路径的路径,看路径是什么;从而确定是否是因为环境变量导致的;
Environment.GetEnvironmentVariable("TEMP");
Environment.GetEnvironmentVariable("TMP");
三、看看你的创建临时目录的代码、建议用相对路径;
参考资料:http://msdn.microsoft.com/en-us/library/system.environment.aspx
.net里面编写Windows服务很这容易,它与普通的windows程序没什么不一样,
Windows服务的启动代码为:
ServiceBase.Run(new ServiceBase());
一般Windows程序的启动代码为:
Application.Run(new Form());
其它地方都一样,除了服务没有UI外(以特殊方式可以产生与用户交互的UI)。
如果想判断启动的方式话,建议你可以从
ServiceBase.Run方法或者Application.Run方法去排除其中的一种
鉴于这种思路你可以参考一下