原始链接: https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3223434&SiteID=1
Hi Guys,
My goal is to run a program before user even log on to system in vista. Here are couple of links i have already went through. These codes are working fine when ever we are dealing with WinSta0\\default desktop when user is log on but my requirements are different.
http://www.codeproject.com/KB/vista-security/VistaSessions.aspx?fid=406624&sort=Position&noise=3&view=Quick&mpp=50&df=1
http://www.uvnc.com/vista/
http://www.codeproject.com/KB/vista-security/VistaSessionsC_.aspx
Steps that wosks fine
-------------------------------
- Get the Active Console SessionId using
WTSGetActiveConsoleSessionId
- Since I need to launch the application under a system account, I use the token from Winlogon, since Winlogon runs under the system account. So I obtain the process ID of Winlogon and Duplicate the token.
- Then I make sure I sent the startupinfo parameter
lpDesktop
to winsta0\Default since I need to launch my process there.
- Then I use
CreateProcessAsUser
with Winlogon's duplicate token to launch my process into session 1.
- That's all. I am done.
I got this working on Vista but I would like to launch a progrma to the WinSta0\\Winlogon desktop. Anyone have any ideas? When I change the desktop to WinSta0\\Winlogon the application does not appear on the logon screen. However, when I run the program on XP it works.
Vista must have the Winlogon Desktop permissions set differently, I added "SeTcbPrivilege" but that did no good. Also, if I look at taskmgr I see the program started along with CreateProcessAsUser not returning any errors. It appears to work, just cannot see the application on the WinSta0\\Winlogon desktop. Anyone have any ideas?
==================================================================================================
It works! with vista !!
1. WTSGetActiveConsoleSessionId();
2. WTSQueryUserToken() for winlogon.exe winlogon pid
3. DuplicateTokenEx ()
4. AdjustTokenPrivileges ()
5. CreateProcessAsUser ()
lpDesktop
to Winsta0\Winlogon
Fire the executable via taskscheduler (schtasks.exe) with SYSTEM priveleges.
Muhahahaha
![](http://forums.microsoft.com/MSDN/WebResource.axd?d=NySzF1eivP_rMoc50GQJzcvS4MHMOEKwYrCIgDtzuzlw7GsNki3H_INlfYaLgkxF2WImMhtQIz9Re7PuctA64ZVF_xzUNgBmL8gde9iPLu41&t=633337194230757564)
, and then if you dont see youre app in the winlogon desktop, try hitting ALT+TAB .... in the winlogon desktop.
I hope microsoft keeps this entry point for showing things on the secure desktop, cause we use it to show the unattended installation progress, I think the secure desktop should stay accessible in future releases.
(btw, I did not test it with FUS Fast User Switching, It worked with a domain account setting, this means Fast User Switching is not enabled).
Much appreciated,
mon11.
==================================================================================================
Fast User Switching is enabled for domain accounts in Vista by default, so that's not necessarily true.
==================================================================================================
AndyCadley,
You are right, I tested it, it works also with FUS.
其他连接:
[1] http://blogs.msdn.com/ntdebugging/archive/2007/01/04/desktop-heap-overview.aspx
[2] http://blogs.technet.com/askperf/archive/2007/07/24/sessions-desktops-and-windows-stations.aspx
posted on 2008-06-28 08:22
free2000fly 阅读(2205)
评论(0) 编辑 收藏 引用