【发布时间】:2012-10-23 07:12:05
【问题描述】:
我正在开发一个 Inno Setup 安装程序,它调用 net use 来连接到共享服务器。安装程序可以连接到服务器,如果它在 Windows XP 上运行,但不是在 Windows 7 上运行。我认为它与 UAC 有关,因为我键入相同的命令,服务器连接在 Windows 7 上,但安装程序正在运行 @987654322 @特权。
我正在通过Exec 或ShellExec 脚本函数使用以下net use 命令:
/c net use \\servername password /user:username
实际上,这里是显示net use 命令调用的脚本的一部分:
[Code]
var
ErrorCode: Integer;
cmdString: String;
intvalue: Integer;
str: String;
function InitializeSetup(): Boolean;
begin
cmdString := '/c net use \\servername password /USER:username';
ShellExec('', ExpandConstant('{cmd}'), cmdString , '', SW_SHOWNORMAL,
ewWaitUntilTerminated, ErrorCode)
if (ErrorCode = 0) then
begin
MsgBox(ExpandConstant('{cmd}'), mbInformation, MB_OK);
end;
end;
有人可以建议如何在 Windows 7 上使用 Inno Setup 中的 net use 吗?我们只想连接到服务器并让用户输入名称和密码。
谢谢!
【问题讨论】:
-
我已经尝试
net use映射网络共享(虽然没有密码),但它有效。事实是,我使用Exec直接调用了net.exe,而不是通过命令行(也许命令行甚至返回mazy 结果,不知道,但我会尝试)。同时,我将向您发布我的测试代码。对于其他人,我对这个问题所做的更新来自很长的评论讨论,所以我要求 OP 清理 workspace。 -
虽然
net.exe很方便,但最好直接使用API(在这种情况下,WNetUseConnection与给定答案一样)。有时命令会意外停止并等待输入,如果您尝试隐藏运行它可能会导致真正的问题(如果您没有隐藏运行它,您会得到一个丑陋的控制台窗口)。毕竟,它是为控制台管理员使用而设计的,而不是软件——这就是 API 的用途。 -
您好 Miral,我们在 Windows 7 上遇到了 net.exe 问题,看起来 net 命令实际上并没有被执行,而返回值显示它没问题。我想知道这是否是一个错误,或者我错过了什么。
-
请记住,设置(提升时)以不同的用户或执行级别作为桌面的其余部分运行。连接不会像您期望的那样被保留。
-
嗨,Deanna,感谢您的回复,这有助于我了解问题的原因。
标签: windows-7 inno-setup uac net-use