本篇主要讲Windows Vista下, service的一些issues.
coding的方法跟Xp是完全一样的, Vista的service号称加了很多安全特性, 请自行yy:
http://msdn2.microsoft.com/en-us/library/bb203962(VS.85).aspx
感觉影响最大的就是“Session 0 Isolation”这个东西, Vista的service都是跑在session 0下, 而Xp则是要看session建立的数序的(即多用户登录顺序). 导致的结果就是OutputDebugString完全打不出东西, MessageBox完全弹不出来, 既而就是完全没有办法debug.
其实原因很简单, 所有的debug string, message box, 全部都在session 0下运行, 而你登录的session id一般是从1开始, 以此类推. 所以只是你看不见而已. debug string的解决方法是去下一个最新的dbgview, 支持vista, 有一个选项可以看到所有session的debug string. message box的解决办法则是通过WTS(Window Terminal Service)的一个API: WTSSendMessage(). 这个API, Xp也是兼容的.
一般注册成Local System运行的service权限都够高了, 似乎并不需要特别的priviledge. 反正Vista的权限管理觉得有些混乱, 比如UAC, 比如ACL, 比如直接就叫priviledge-.-, 有空要理理清楚, 嗯.
另外发现一个非常搞的事情, 所谓的兼容运行. 比如Vista下我用Xp来兼容运行, GetSystemInfo出来的版本号居然是Xp的, laf///



