【问题标题】:Executing a program using runas and changing the window title使用 runas 执行程序并更改窗口标题
【发布时间】:2014-09-25 20:36:07
【问题描述】:

这些天我正在处理几个不同的域帐户,并且我有大约十几个需要在特定帐户下运行的程序。其中一些需要在一个域帐户下运行才能访问“this”,而需要在另一个帐户下运行才能访问“that”。我的解决方案是使用带有 /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?

【问题讨论】:

    标签: powershell batch-file cmd runas


    【解决方案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:在 Win 7 和更高版本上,sendmail 是保留名称,因此必须更改)。

    .NET 框架(powershell 使用)中没有 Windows 命令,操作其他程序的窗口不在 .NET 理念中。这可能是 .NET 唯一没有反映 Window 的 API 的地方。 .NET 程序可以通过它们的表单对象来操作它们自己的窗口。

    【讨论】:

      【解决方案2】:

      既然你提到了powershell,控制它的标题很容易,只要把这个命令放在任何ps1脚本的顶部。当它运行时,您会看到更改后的标题。

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

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

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

      用法

      Change_Console_Title -title "Woot"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-08
        • 2014-01-16
        相关资源
        最近更新 更多