2012-09-06 44 views
0

我寫了一個在Windows服務中運行的posh腳本。從計算機上的特定操作中,我需要顯示一個警告用戶的彈出窗口。如何從運行PowerShell腳本的Windows服務中顯示彈出窗口

$popupMsg = @" message "@ 
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
[System.Windows.Forms.MessageBox]::Show($user+ $popupMsg,"Remote Connection Information","OK","Warning") 

當我從PowerGUI的,在彈出的顯示細膩運行此腳本,但是當我運行在運行該腳本的Windows服務,彈出不會顯示出來。 這是怎麼回事?感謝人們!

+0

服務按定義是非互動的。要從一個對話框中顯示對話框,您必須使用上面的方法調用前臺腳本。 –

回答

1

嘗試設置「允許服務與桌面交互」的服務設置:

enter image description here

+0

我不能這樣做,因爲我使用'This account'選項來指定允許運行服務的應用程序登錄 –

1

你希望成爲什麼版本的Windows的支持? Session 0 Isolation將阻止您在Vista及更高版本的用戶桌面上顯示任何類型的GUI。

+0

不幸的是我基本上使用Win 7並且只是一點點贏了xp ...所以我猜猜我沒有解決方案然後...當計時器打勾時,要求我的服務啓動一個.exe文件怎麼樣?那會有訣竅嗎? –

+0

[在用戶會話中啓動一個exe](http://www.codeproject.com/Articles/36581/Interaction-between-services-and-applications-at-u)是一個選項,但可能是矯枉過正。如果您可以找出用戶會話的ID,則可以使用[WTSSendMessage](http://msdn.microsoft.com/zh-cn/library/windows/desktop/aa383842%28v=vs.85%29.aspx )在那裏顯示一個消息框。 – CoreTech

相關問題