gpt4 book ai didi

c# - 以编程方式执行 'ksetup.exe' 命令行命令

转载 作者:行者123 更新时间:2023-11-30 17:43:35 24 4
gpt4 key购买 nike

'Ksetup.exe'工具用于在windows机器上配置KDC服务器; Link1 , Link2 ;

此工具位于“C:\Windows\System32\”位置;找到 image ;

这可以直接在命令提示符下执行,得到 native 安装KDC的结果; (检查图像)! [KDC executed]

我需要通过 C# 以编程方式执行此命令;我尝试使用带有以下代码的 ProcessInfo 类;但是我无法仅针对此命令获得结果;我的意思是我可以得到我尝试过的所有其他命令的结果(比如 ipconfig、主机名等)

ProcessStartInfo startInfo = new ProcessStartInfo("cmd", "/c ksetup")
{
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = true,
WorkingDirectory = @"C:\Windows\System32"
};
Process p = Process.Start(startInfo);
p.Start();
p.WaitForExit();

当我执行相同的操作时,我得到这样的输出消息,

"'ksetup' is not recognized as an internal or external command,\r\noperable program or batch file."

我需要对代码进行哪些更改才能执行命令?

编辑 - 使用变通解决方案

出现此问题是因为我们试图访问属于“C:\Windows\System32”目录的文件;

后来我把文件复制到“C:\Windows\ksetup.exe”位置就可以了;

其他引用资料:Why do 64-bit DLLs go to System32 and 32-bit DLLs to SysWoW64 on 64-bit Windows?

另一种解决方案是,在项目属性窗口的构建选项卡中取消选中“首选 32 位选项”;

所以我的问题是我们不能以编程方式访问“C:\Windows\System32”位置中的文件/命令吗?

最佳答案

虽然 OP 已通过将应用程序移动到不同的文件夹来指示解决方案,并推断问题是权限问题,但我想根据对此问题的一些特定测试提供不同的答案。

我强烈怀疑在这种情况下触发的可执行文件是 x86 或启用了“首选 32 位代码”的 AnyCPU/X64。

ksetup.exe 是 64 位可执行文件。如果尝试“生成”ksetup 的应用程序是 32 位的,并尝试从 c:\Windows\System32 文件夹启动应用程序,Windows 将透明地尝试从 C:\Windows\Syswow64 文件夹运行该应用程序。这就是“无法识别 ksetup...”错误的原因 - 子系​​统试图在 c:\Windows\SysWow64 中找到该文件,但它不在那里。

将 ksetup 移动到 SysWow64 是行不通的,因为它本身是一个 64 位应用程序,并且该文件夹中的依赖项将无法正确支持该应用程序。

我恭敬地建议,解决方案是将生成的可执行文件标记为 AnyCPU 或 x64,并显式取消选中“首选 32 位”。

我自己尝试了使用 ksetup 可执行文件的解决方案,并按照说明通过在 32 位和 64 位之间更改可执行文件来重现了这些结果。将生成的可执行文件设置为 64 位或 AnyCPU 即可。

关于c# - 以编程方式执行 'ksetup.exe' 命令行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30732381/

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