vb.net从ListView启动进程作为不同的用户Excel 2013文档作为参数 - 文件已锁定

时间:2017-03-13 20:29:36

标签: excel vb.net listview

我正在为“RunAs不同用户”创建一个小应用程序。应打开的文件(完整路径)存储在Listview中。

如果调用该程序 Do_RunAs(“C:\ Program Files(x86)\ Microsoft Office \ Office15 \ EXCEL.EXE”,“D:\ Run As Test \ Naming - Test.xlsx”) ......它正在运作

但是 如果调用该程序 调用Do_RunAs(“C:\ Program Files(x86)\ Microsoft Office \ Office15 \ EXCEL.EXE”,item.SubItems(1).Text) 我在EXCEL中收到此消息(参见链接图片) ...file is locked for editing by another user

以下是Do_RunAs的代码

Public Sub Do_RunAs(strApplication As String, strFilename As String)
    Dim procStartInfo As New ProcessStartInfo
    Dim procExecuting As New Process

    With procStartInfo
        .UseShellExecute = False

        .Domain = strDomain
        .UserName = strUserName
        .Password = ConvertToSecureString(strPassword)
        .Verb = "runas"
        .LoadUserProfile = True

        .FileName = GetShortPathName(strApplication)
        .Arguments = GetShortPathName(strFilename).ToString
        .WindowStyle = ProcessWindowStyle.Normal
    End With

    procExecuting = Process.Start(procStartInfo)
    procExecuting.Close()
End Sub

作为我已经尝试过的论据

  • .Arguments = strFilename
  • .Arguments = Chr(34)+ strFilename + Chr(34)
  • .Arguments = GetShortPathName(strFilename)
  • .Arguments = GetShortPathName(strFilename).ToString

没有任何作用,总是同样的错误。

如果有人可以帮助我会很棒 - 非常感谢提前!

1 个答案:

答案 0 :(得分:0)

我找到了这个问题的答案......也许有人需要它 在Sub-Next循环中调用此Sub。我在下次调用此Sub之前添加了一个WAIT函数

For i = 1 To 10
    Call Do_RunAs("Excel.exe", "xy.xls")
    Wait(3) 'wait 3 seconds
Next

这解决了问题