为什么我的应用程序在我的服务启动时没有显示

时间:2009-05-15 14:56:43

标签: c# process hidden

[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

const int SW_SHOW =5;

string Tartgetfile = @"C:\BringLog.exe";
p.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
p.StartInfo.CreateNoWindow = false;
p.StartInfo.FileName = Tartgetfile;
try
 {
  if (p.Start() == true)
   {
     ShowWindow(p.Handle, SW_SHOW);
     WriteToLog("PROCESS STARTED");
   }
  else
   {
    WriteToLog("FAILED TO START PROCESS");
   }
 }
catch (Exception ex)
 {
  WriteToLog("FAILED TO START PROCESS" + ex.Message+ ex.Source);
 }                     

我在我的服务onsessionchange事件中使用了这段代码,该服务在登录事件中启动我的应用程序但是应用程序被隐藏但正在运行。我无法查看

1 个答案:

答案 0 :(得分:1)

默认情况下,服务无权访问任何会话 - 不是登录会话,而是Vista中的安全UAC,甚至不是普通用户会话。因此,他们无处可以展示自己的窗户。这很好。它周围有黑客攻击,但正确的方法可能是在Windows Station“Winsta0”中创建进程。在致电STARTUPINFO.lpDesktop ="winsta0\default";时设置CreateProcess( )