小编use*_*511的帖子

在Excel VBA中登录用户名 - 而不是运行Excel的帐户(使用RunAs)

我使用普通的域凭据登录了我的工作站.我们称之为AccountA.

然后我使用"以其他用户身份运行"来启动Excel.我们称之为账户B. 我这样做是因为查询某些SQL服务器所需的权限必须使用AccountB完成.

此时,我需要包含一个子例程来启动Shell以创建目录并在远程服务器上移动文件.AccountB没有(也没有)权限来执行此操作.我的shell给了我一个拒绝访问的消息.精细.

所以现在,我需要让VBA返回AccountA的名称,这是我用来登录计算机的帐户.我该怎么做呢?

我在这个网站上看到了很多例子以及其他会返回运行Excel(AccountB)的用户名的例子.但是,我还没有看到任何将AccountA信息传递给Shell的示例,以通过RunAs适当的权限执行我的命令.以下是我尝试过的一些事情,都返回了AccountB(用于RunAs启动Excel 的帐户)

具有在远程服务器上运行cmd shell的权限的多个人将使用此应用程序,因此无法对AccountA进行硬编码,并且必须以编程方式获取.

' Access the GetUserNameA function in advapi32.dll and
' call the function GetUserName.
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long

Sub XXXXXXXXXX()
'//
ThisWorkbook.Sheets("XXXXXXXXXX").Activate ' select the worksheet for use
cmdString = UCase(Trim(ThisWorkbook.ActiveSheet.Cells(4, 4).Value)) 'get XXXXXXXXXX

'MsgBox cmdString
'retval = Shell("cmd.exe /k " & cmdString, vbNormalNoFocus)
'cmdString = "MkDir \\XXXXXXXXXX\g$\Tempski" 'fails - no permission

'Set the Domain …
Run Code Online (Sandbox Code Playgroud)

shell excel vba excel-vba

11
推荐指数
1
解决办法
2703
查看次数

标签 统计

excel ×1

excel-vba ×1

shell ×1

vba ×1