Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can';在脚本上使用CreateProcess无法获取修改注册表的服务_C++_Windows_Service_Registry_Createprocess - Fatal编程技术网

C++ Can';在脚本上使用CreateProcess无法获取修改注册表的服务

C++ Can';在脚本上使用CreateProcess无法获取修改注册表的服务,c++,windows,service,registry,createprocess,C++,Windows,Service,Registry,Createprocess,-我有一个在本地系统下运行的服务(没有桌面交互) -我有一个.js脚本,可以在HKLM\software\中进行简单的注册表更改 鹬: try{ var WshShell = new ActiveXObject("WScript.Shell"); regvalue = WshShell.ExpandEnvironmentStrings(regvalue); WshShell.RegWrite(regkey, regvalue, regtype); } -当通过命令提示符运行

-我有一个在本地系统下运行的服务(没有桌面交互)

-我有一个.js脚本,可以在HKLM\software\中进行简单的注册表更改

鹬:

try{
var WshShell = new ActiveXObject("WScript.Shell");
regvalue = WshShell.ExpandEnvironmentStrings(regvalue);
WshShell.RegWrite(regkey, regvalue, regtype);
}
-当通过命令提示符运行并双击时,脚本将成功修改注册表

-脚本还将在完成时生成一个文本文件。在WshShell.RegWrite()捕获的情况下,可以是“success.txt”,也可以是“error.txt”

这就是我在服务中调用脚本的方式(仅用于测试的硬编码)

CreateProcess返回true,脚本创建成功文本文件,但注册表保持不变。

注意:1)在很多其他地方都提到将第一个参数作为NULL发送,事实上这是我让脚本成功运行的唯一方法。 2) 该脚本没有用户界面或与用户的交互 3) shellexecute正在产生相同的行为

我知道有一百万种更简单的方法可以实现这一点,但我的目标是让这种方法发挥作用


我假设wscript.exe没有权限,但我不必获取usertoken和runas,因为服务正在创建进程…

最可能的问题是:您正在写入注册表中具有单独32位和64位视图的部分。(请注意,您将以32位进程的形式启动脚本。)从
SysWOW64
调用内容将在WoW64下运行它们,您确定要检查32位(而不是64位)注册表的更改吗?谢谢各位,我不知道有一个%systemroot%\SysWOW64\regedit与regedit不同
STARTUPINFO si = { sizeof(STARTUPINFO) };
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
PROCESS_INFORMATION pi;
bool bRes = false;
TCHAR appCmdLine[] = TEXT("C:\\Windows\\SysWOW64\\wscript.exe //NOLOGO C:/Test/testpatchHKLM.js");
bRes = CreateProcess(NULL, appCmdLine, NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi);