user-0 提问: 请教一个关于代码里调用winsat的问题~

回复:
user: user-0
content: 引用 10 楼 zhao4zhong1 的回复:你完全可以在资源管理器中的winsat.exe上点鼠标右键，选择以管理员身份运行。 额。。。 我的应用场景大概是这样的，正在做一个直播推流软件，在做用户引导时需要检测一下用户电脑的各项评分，然后给用户推荐相应的推流设置。。。。总不能让用户自己去运行啊~

user: user-0
content: 引用 9 楼 zwfgdlc 的回复:提示什么错误呢 代码大概如下： （细节拼写错误请忽略） SHELLEXECUTEINFO shExInfo = { shExInfo.cbSize           = sizeof(shExInfo); shExInfo.hwnd             = 0; shExInfo.lpVerb           = L"runas";  /* Operation to perform */ shExInfo.lpFile           = "WinSAT.exe";    /* Application to start */ shExInfo.lpParameters     = "disk -xml disk.xml"; /* Additional parameters */ shExInfo.lpDirectory      = cwd; shExInfo.nShow            = SW_NORMAL; shExInfo.hInstApp         = 0; ShellExecuteEx(shExInfo);  运行后的cmd窗口会提示找不到WinSAT.exe。即使改成 shExInfo.lpFile  = "C:\\Windows\\System32WinSAT.exe";依旧提示找不到文件，很是不懂。

user: user-1
content: 引用 12楼我是你的主体 的回复:[quote=引用 10 楼 zhao4zhong1 的回复:] 你完全可以在资源管理器中的winsat.exe上点鼠标右键，选择以管理员身份运行。 额。。。 我的应用场景大概是这样的，正在做一个直播推流软件，在做用户引导时需要检测一下用户电脑的各项评分，然后给用户推荐相应的推流设置。。。。总不能让用户自己去运行啊~[/quote]PVOID pOld; 	Wow64DisableWow64FsRedirection(&pOld); 明白了，文件重定向，你这是32位的程序，加上这个关闭重定向

user: user-2
content: 百度搜“如何编程设置某个exe以管理员身份运行”

user: user-2
content: C:\>runas /? RUNAS 用法:  RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ]         /user:<UserName> program  RUNAS [ [/noprofile | /profile] [/env] [/savecred] ]         /smartcard [/user:<UserName>] program     /noprofile        指定不应该加载用户的配置文件。                      这会加速应用程序加载，但                      可能会造成一些应用程序运行不正常。    /profile          指定应该加载用户的配置文件。                      这是默认值。    /env              要使用当前环境，而不是用户的环境。    /netonly          只在指定的凭据限于远程访问的情况下才使用。    /savecred         用用户以前保存的凭据。                      Windows XP Home Edition 上没有这个选项。                      该选项会被忽略。    /smartcard        如果凭据是智能卡提供的，则使用这个选项。    /user             <UserName> 应使用 USER@DOMAIN 或 DOMAIN\USER 形式    program           EXE 的命令行。请参阅下面的例子  例如: > runas /noprofile /user:mymachine\administrator cmd > runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc" > runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\""  注意:  只在得到提示时才输入用户的密码。 注意:  USER@DOMAIN 跟 /netonly 不兼容。 注意:  /profile 跟 /netonly 不兼容。 注意:  /savecred 跟 /smartcard 不兼容。

user: user-2
content: WinExec(_T("cmd /c runas /user:administrator \"cd /d d:\\mydir&winsat disk -xml disk.xml\""),SW_HIDE);

user: user-0
content: 引用 2 楼 zhao4zhong1 的回复://假定winsat.exe在d:\mydir文件夹下： WinExec(_T("cmd /c cd /d d:\\mydir&winsat disk -xml disk.xml"),SW_HIDE); 试试看。 试了一下也没有效果~  cmd必须要以管理员权限执行winsat XXX命令才可以。 不明白为什么我用shellexecute + "runas"参数不起作用了~可是我查windows的文档也没说这个函数不能用了啊~

user: user-0
content: 试了一下也没有效果~  cmd必须要以管理员权限执行winsat XXX命令才可以。 不明白为什么我用shellexecute + "runas"参数不起作用了~可是我查windows的文档也没说这个函数不能用了啊~

user: user-2
content: //假定winsat.exe在d:\mydir文件夹下： WinExec(_T("cmd /c cd /d d:\\mydir&winsat disk -xml disk.xml"),SW_HIDE); 试试看。

user: user-0
content: 有没有大佬可以指点一下萌新~  这个问题纠结了一天了。。

user: user-2
content: 你完全可以在资源管理器中的winsat.exe上点鼠标右键，选择以管理员身份运行。

user: user-1
content: 提示什么错误呢

user: user-0
content: 引用 5 楼 zhao4zhong1 的回复:WinExec(_T("cmd /c runas /user:administrator \"cd /d d:\\mydir&winsat disk -xml disk.xml\""),SW_HIDE); 参考您在某个帖子中的回复： http://bbs.csdn.net/topics/390684999 为什么这个net命令可以运行，但是winsat不能运行呢？

user: user-0
content: 引用 5 楼 zhao4zhong1 的回复:WinExec(_T("cmd /c runas /user:administrator \"cd /d d:\\mydir&winsat disk -xml disk.xml\""),SW_HIDE); 感谢大神的回复~  上面的命令貌似可以~但是程序里面不希望跳出控制台的黑框，并且也不会去提示用户输入administrator的密码。 我想知道有没有某个windows的API可以直接以管理员身份去启动cmd，而不会出现任何提示呢？