Programmer_Mao
方法一 让用户手动设置游戏项目为管理员运行,然后直接运行 OS.execute("cmd",["/c",注册命令])
方法二 通过用户点击其他程序如bat批处理 使项目获得管理员权限 powershell start 项目程序.exe -v runas
然后按上面方法使用
方法三 编写一个专门执行命令的程序,跟项目程序一起打包发行,OS.execute("专门执行命令的程序.exe",[参数]
方法四 通过gdnative或者c#版获得更大支持,方法三就可以通过c/c++绑定。
方法五 向godot提建议,请求实现功能
下面是C语言调用windows下ShellExecuteEx
接口执行命令(具体细节自行搜索)
当然也可以使用GDNative将下列接口封装在godot内直接通过脚本调用
使用方法是OS.execute("runas.exe",["cmd.exe","/C +要执行的命令"])
也可以运行批处理执行,将cmd.exe改成.bat批处理文件所在地址。
#include <windows.h>
#include <stdio.h>
void run(char *lpFile, char *lpParameters)
{
SHELLEXECUTEINFO sei;
memset(&sei, 0, sizeof(SHELLEXECUTEINFO));
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.lpVerb = "runas";
sei.lpFile = lpFile; //执行程序地址
sei.lpParameters = lpParameters; //执行程序参数
sei.nShow = SW_SHOWDEFAULT;
ShellExecuteEx(&sei);
WaitForSingleObject(sei.hProcess, INFINITE);
CloseHandle(sei.hProcess);
}
int main(int argc, char *argv[])
{
int count;
printf("The command line has %d arguments :\n", argc - 1);
for (count = 1; count < argc; ++count)
{
printf("%d: %s\n", count, argv[count]);//打印输入参数
}
run(argv[1], argv[2]); //接收命令行参数 前两个
return 0;
}
编译方法gcc runas.c -o runas.exe
缩减尺寸-> strip runas.exe
上述代码编译后结果
—
方法三 也是现找的,更复杂、具体的就不懂了,欢迎更多大佬支招 😀
我个人还是倾向于把上述代码通过GDNative实现,方便godot内部通过gdscript调用
具体怎么实现我就懒得弄了,期待其他大佬的力量 🤣 :