gpt4 book ai didi

c - 使用 ShellExecuteEx 永久设置路径变量

转载 作者:可可西里 更新时间:2023-11-01 09:34:35 26 4
gpt4 key购买 nike

我想出了这段代码。它将正确执行并返回 true。但它不会改变 Path 变量的值。当我这样输入时 --> setx Path "C:\Program Files\Java\jdk1.7.0_02\bin\"在 cmd 中,它可以工作并更改 Path 值

这是代码

// Prepare shellExecutInfo
SHELLEXECUTEINFO ShRun = {0};
ShRun.cbSize = sizeof(SHELLEXECUTEINFO);
ShRun.fMask = SEE_MASK_NOCLOSEPROCESS;
ShRun.hwnd = NULL;
ShRun.lpVerb =NULL;
ShRun.lpFile = "C:\\Windows\\System32\\setx.exe";
ShRun.lpParameters = "Path \"\"\"C:\\Program Files\\Java\\jdk1.7.0_02\\bin\\\"\"\"";
ShRun.lpDirectory =NULL;
ShRun.nShow = SW_SHOWNORMAL;
ShRun.hInstApp = NULL;

// Execute the file with the parameters
if(ShellExecuteEx(&ShRun))
printf("done");
else
printf("no");

这里会出现什么问题??

最佳答案

您对论点的引用是错误的。你引用的太多了。你需要写

ShRun.lpParameters = "Path \"C:\\Program Files\\Java\\jdk1.7.0_02\\bin\\\"";

为了查看您的版本是否会失败,我在控制台做了以下实验:

C:\Users\heff>setx path """C:\Program Files\Java\jdk1.7.0_02\bin\"""ERROR: Invalid syntax. Default option is not allowed more than '2' time(s).Type "SETX /?" for usage.

我还注意到您正在使用 SEE_MASK_NOCLOSEPROCESS。通常,您这样做是为了等待返回的进程句柄。你似乎没有那样做。更重要的是,您似乎没有关闭进程句柄,这是您在使用 SEE_MASK_NOCLOSEPROCESS 时的责任。

关于c - 使用 ShellExecuteEx 永久设置路径变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15740767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com