使用runas执行程序并更改窗口标题

时间:2014-09-25 20:36:08

标签: powershell batch-file cmd runas

我现在在处理几个不同的域名帐户,而且我有大约十几个需要在特定帐户下运行的程序。其中一些需要在一个域帐户下运行才能访问"这个"和一个不同的帐户来访问"那个"。我的解决方案是使用带有/ user开关的runas的快捷方式,并且工作正常。

然而,我想更进一步。有没有办法改变我打开的程序的窗口标题?例如,SSMS:

C:\Windows\System32\runas.exe /savecred /user:DOMAINA\username "C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe"

我尝试了一些添加"标题MYTITLE"还有什么,但是还没有发现任何可行的东西。

也许可以使用Powershell?

2 个答案:

答案 0 :(得分:1)

/savecred允许帐户持有人像您一样运行任何命令。在你的情况下可能无所谓,但要记住它。它仅在Windows中作为兼容性的东西。它将来会消失。

如果是命令提示符启动cmd并使用title命令,则启动程序。

C:\Users\User>title /?
Sets the window title for the command prompt window.

TITLE [string]

  string       Specifies the title for the command prompt window.

如果GUI程序这个示例VB6代码改变了标题。您可以使用vb.net制作它的程序。

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long

Sub Main()
    On Error Resume Next
    hwindows = FindWindow(vbNullString, "Microsoft Works Calendar")
    Ret = SetWindowText(hwindows, "Calandar")
End Sub

这显示了如何制作vb.net程序并转换vbs / vb6 http://social.msdn.microsoft.com/Forums/en-US/adcae113-4758-481a-a367-60d5d14d97d6/this-is-how-to-turn-vbs-and-js-files-into-exe-files-from-the-command-line-without-third-party-tools?forum=scripting

这是类似的,但是关于操纵Windows appactivate between multiple internet explorer instances(PS:On Win 7和更高版本的sendmail是保留名称,因此必须更改)。

.NET框架(powershell使用)中没有Windows命令,操纵其他程序的窗口不是.NET哲学。这可能是.NET不能反映Window API的唯一区域。 .NET程序可以通过表单对象操作自己的窗口。

答案 1 :(得分:0)

由于您提到了powershell,因此很容易控制它的标题,只需将此命令放在任何ps1脚本的顶部即可。当它运行时,您将看到更改的标题。

$host.ui.RawUI.WindowTitle = "Changed Title"

或者这是一个可重用的powershell函数。

Function Change_Console_Title ($title) {$host.ui.RawUI.WindowTitle = "$title"}

用法

Change_Console_Title -title "Woot"