NT/2000/XP的本地服务的默认账号是LocalSystem
但是该用户是一个空会话(NULL Session)
使用该帐号不能访问网络资源
(参看Microsoft Knowledge Base Article - Q124184
Service Running as System Account Fails Accessing Network)这个帐号可以设置成和桌面交互,
如果把服务改成一个明确的用户,比如Administrator,就可以成功的访问网络资源了,但是这样的服务,不能设置成与桌面交互。问题
1.为什么Administrator启动的服务不能设置和桌面交互?(这个问题算附加题,不答不减分,答了给分)
2.与桌面交互是个什么东东?是个权限吗?我枚举了一下NT的权限,没有发现这个玩意。就算服务自己不能和桌面交互,但是可不可以创出能和桌面交互的进程来,怎么说也是Administrator啊
3.如果用LocalSystem用户启动了服务,并且设置成能和桌面交互,服务在某种情况下,显示出一个窗口来,那么这个窗口应该在哪里呢?比如,我是XP,在本机上同时有A帐号和B帐号登录(XP上可以切换用户),那么窗口应该显示在哪个用户的desktop里呢?又比如2000有终端服务,窗口会不会显示到终端服务用户的桌面里去呢?如果本机没有人登录,窗口显示在系统的登陆窗口上吗,还是根本不显示?有没有相关的文档可以查阅?困惑,ms go die
但是该用户是一个空会话(NULL Session)
使用该帐号不能访问网络资源
(参看Microsoft Knowledge Base Article - Q124184
Service Running as System Account Fails Accessing Network)这个帐号可以设置成和桌面交互,
如果把服务改成一个明确的用户,比如Administrator,就可以成功的访问网络资源了,但是这样的服务,不能设置成与桌面交互。问题
1.为什么Administrator启动的服务不能设置和桌面交互?(这个问题算附加题,不答不减分,答了给分)
2.与桌面交互是个什么东东?是个权限吗?我枚举了一下NT的权限,没有发现这个玩意。就算服务自己不能和桌面交互,但是可不可以创出能和桌面交互的进程来,怎么说也是Administrator啊
3.如果用LocalSystem用户启动了服务,并且设置成能和桌面交互,服务在某种情况下,显示出一个窗口来,那么这个窗口应该在哪里呢?比如,我是XP,在本机上同时有A帐号和B帐号登录(XP上可以切换用户),那么窗口应该显示在哪个用户的desktop里呢?又比如2000有终端服务,窗口会不会显示到终端服务用户的桌面里去呢?如果本机没有人登录,窗口显示在系统的登陆窗口上吗,还是根本不显示?有没有相关的文档可以查阅?困惑,ms go die
解决方案 »
- MFC,最小化后,点击不恢复显示了。请教原因
- 我讨厌做网页,我讨厌用ASP.NET!!!
- 免费的C++编译器的问题
- 求教关于霍尼维尔北京,顺便散50分
- 请问:在VC7的 mfc工程中,用msxml4.dll来如何实现写xml文件中结点的属性,及一些让人一头雾水的问题。
- 哪位大侠给我讲解一下:extern "C" __declspec(dllexport) BOOL EndDynamic();
- 用主频1G的PC对12位的2000*3000 图象点阵进行三次样条插值,程序退出时很慢,为什么?
- _CrtIsValidHeapPointer(pUserData) 问题
- thread safe是什么概念?
- 进入本月专家排行,送分200,前10名有份.
- 请问在ListControl中Report风格 如何使指定item为不可操作
- 一个问题
你可以试一下在system下访问网络,用
WNetAddConnection2
例如
NETRESOURCE RemoteServer;
memset(&RemoteServer,0,sizeof(RemoteServer));
RemoteServer.lpRemoteName = "\\\\MyServer\\TestDir";
RemoteServer.dwType=RESOURCETYPE_ANY;
LPCTSTR lpPassWord = "";
LPCTSTR lpUsername = "Guest";
WNetAddConnection2(&RemoteServer,lpPassword,lpUsername,0);
在普通App下能成功访问,
但如果是system用户就不能正常访问了
Because of some character of GDI resource, all the service interact with desktop runing in one session.2.与桌面交互是个什么东东?是个权限吗?我枚举了一下NT的权限,没有发现这个玩意。就算服务自己不能和桌面交互,但是可不可以创出能和桌面交互的进程来,怎么说也是Administrator啊
For example: show a messagebox3.如果用LocalSystem用户启动了服务,并且设置成能和桌面交互,服务在某种情况下,显示出一个窗口来,那么这个窗口应该在哪里呢?比如,我是XP,在本机上同时有A帐号和B帐号登录(XP上可以切换用户),那么窗口应该显示在哪个用户的desktop里呢?又比如2000有终端服务,窗口会不会显示到终端服务用户的桌面里去呢?如果本机没有人登录,窗口显示在系统的登陆窗口上吗,还是根本不显示?有没有相关的文档可以查阅?maybe you can reference <<in side win2000>>
2 不对,可以.非local的也可以和桌面交互,我做过,但是要使用user以上权限(也有可能是因为我的服务里面用了其他函数,导致需要user以上权限)。记得codeproject上面有个专门的文章,介绍需要交互的服务程序。
------------------------
::高级编程小书童::
1 对
是什么?我的第一个问题又不是是否问题
2。能不能说一下具体应该怎么做,以及codeproject的相关网址to nie173(网流小兔)
简单的说,我想用一个使用administrator的账户用户跑起来的服务,创建一个可以和桌面交互的进程to rokia(Burning)
如果能告诉是哪一个例子就好了
在用户登陆后,服务进程会监测出win2000处于User登录状态,然后会产生一个UI线程,负责在右下系统任务栏里出现一个任务图标,可提供点击和进一步具体操作,当用户企图注销退出时,进程会去掉这个UI线程.当Win2000处于无登录状态时,她便只是一个没有UI的纯后台服务进程。然后周而复始...
我看了一下我的服务的运行记录:在有会话下状态下是独自以SYSTEM身份运行的(不管登录用户身份是administrator,或是普通User),这不影响进程执行效果.只不过对桌面级登录有效,对Win2000的终端服务这种的用户多会话登录模式的却表现不出来像(MS SQLSERVER)的交互效果
gz是什么意思
见笑,新人请多帮助
并且只可以和用Administrator登陆的桌面进行交互。
2,和桌面交互不是什么权限。如果是Users启动的服务应该可以和该User登陆的
桌面交互吧。另外,如果是Administrator的服务,应该可以通过
OpenWindowStation,OpenDesktop设置进行交互吧。不过,交互时是不是
可以使用当前用户的资源就不知道了。访问HWND是没问题的,访问资源我
认为有问题。比如:Administrator有一个资源叫x:\temp,当前用户也
可以设置一个网络资源为x:\temp但指向的位置不同,服务应该访问哪里?
所以,我认为和桌面交互也仅仅是可以访问桌面的窗口句柄而已。
3,我认为应该和当前激活的桌面交互吧,没有确认过,只是猜测。。
应为我写的服务不是别的,而正是网络功能相关的NT服务,
她主要用来嗅探和截获 IP层以上的数据包(发给本地的,或是广播的), 分析数据包内的明文内容,有选择地作为本地网络信息记录
访问网络资源指的是
如,
通过WNetAddConnect2之类的函数访问MS网络,
通过RPC运行远程进程等