WinExec的问题

wuhuar 2009-02-02 01:31:20
void __fastcall TForm1::Button4Click(TObject *Sender)
{
LPCSTR TestStr="cmd";
LPCSTR BatStr="c:\\windows\\system32\\wbem\\wmic.exe computersystem where name=\"%COMPUTERNAME%\" call joindomainorworkgroup \"\",\"\",\"NEWGROUP\"";
WinExec(TestStr,SW_SHOW);
WinExec(BatStr,SW_SHOW);
// 上面的BatStr就是这样的 c:\windows\system32\wbem\wmic.exe computersystem where name="%COMPUTERNAME%" call joindomainorworkgroup "","","NEWGROUP"

}

太奇怪了,前面一个WinExec都没问题,为什么后面一个没有结果,闪一下就过去了,那条指令我单独在命令窗口执行成功.
...全文
137 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cppzhentan 2009-02-04
  • 打赏
  • 举报
回复
执行命令行一般用ShellExecute
ddeng 2009-02-03
  • 打赏
  • 举报
回复
使用ShellExecute试试吧。
utin431 2009-02-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yumikoo 的回复:]
试试用API修改工作组
#include "Lm.h"
void __fastcall TForm1::Button1Click(TObject *Sender)
{
NET_API_STATUS status;
status=NetJoinDomain(NULL,WideString("Yumikoo").c_bstr(),NULL,
WideString("name").c_bstr(), WideString("密码").c_bstr(),
NETSETUP_ACCT_CREATE);
if(status == NERR_Success)
{
ShowMessage("修改成功…
[/Quote]


同意这种方法,从用户角度更容易接受。
yumikoo 2009-02-02
  • 打赏
  • 举报
回复
试试用API修改工作组
#include "Lm.h"
void __fastcall TForm1::Button1Click(TObject *Sender)
{
NET_API_STATUS status;
status=NetJoinDomain(NULL,WideString("Yumikoo").c_bstr(),NULL,
WideString("name").c_bstr(), WideString("密码").c_bstr(),
NETSETUP_ACCT_CREATE);
if(status == NERR_Success)
{
ShowMessage("修改成功!");
}
}
Jim@luckeeinc.com 2009-02-02
  • 打赏
  • 举报
回复
之前也遇到過這樣的情況,查了好久沒有查出來。
後來發現原來是長文件名的問題,如果WinExec調用的.exe文件的路徑名是長文件名,一定要記得+“”號
例如:
String path = "\"" + Eexe->Text.Trim() + "\"";
String php = "\"" + Ephp->Text.Trim() + "\"";
String parameter1 = "\"" + Etd->Text.Trim() + "\"";
String str = path + " " + php + " " + parameter1;

WinExec(str.c_str(), SW_SHOW);
xjq2003 2009-02-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Behard 的回复:]
试一试 LPCSTR BatStr="cmd \r\n c:\\windows\\....";

主要是该命令结束之后自动退出了,又没有命令行支撑
[/Quote]

感觉是这个问题
wesleyluo 2009-02-02
  • 打赏
  • 举报
回复
同意楼上的。
yumikoo 2009-02-02
  • 打赏
  • 举报
回复
不如用API去修改工作组。出来个cmd界面个人觉得不好。
Behard 2009-02-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wuhuar 的回复:]
是有执行的运作,这条指令是改计算机工作组的,但工作组没改过来,为什么单独在命令窗口下就可以有正确的结果呢?
[/Quote]

是不是需要获取权限呢?
wuhuar 2009-02-02
  • 打赏
  • 举报
回复
是有执行的运作,这条指令是改计算机工作组的,但工作组没改过来,为什么单独在命令窗口下就可以有正确的结果呢?
yumikoo 2009-02-02
  • 打赏
  • 举报
回复
命令后面加pause暂停
我不懂电脑 2009-02-02
  • 打赏
  • 举报
回复
,闪一下就过去了
说明命令执行完毕,退出dos窗口了。
Behard 2009-02-02
  • 打赏
  • 举报
回复
试一试 LPCSTR BatStr="cmd \r\n c:\\windows\\....";

主要是该命令结束之后自动退出了,又没有命令行支撑

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧