gpt4 book ai didi

c# - 从 Windows 窗体内部调用 devcon 不起作用

转载 作者:行者123 更新时间:2023-12-05 03:25:09 25 4
gpt4 key购买 nike

计划

计划是从 Windows 窗体应用程序内部禁用并随后启用设备。为了测试我计划的第一个构建基 block ,我以管理员权限打开 cmd,以下运行完美:

> devcon hwids =ports
> devcon hwids *VID_10C4*
> devcon disable *VID_10C4*
> devcon enable *VID_10C4*

我可以在设备管理器中看到设备被禁用并再次启用。

我还可以通过将命令放入批处理文件并使用管理员权限从 cmd 运行它来实现所有这些。以上说明我的方案基本上是好的。

申请

但是,我真正想做的是从 Windows 窗体应用程序内部实现同样的事情:

  1. 我在应用程序 list 中设置了以下内容:

    requestedExecutionLevel level="requireAdministrator" uiAccess="false"

  2. 为了小步骤,我检查了这个,只是为了确保路径中没有愚蠢的错误等等。它工作得很好。日志文件显示了 dir 命令的预期输出。

         // Build String 
    string strCmdText =
    "'/c cd " + prodPath +
    " && dir " +
    " > logs\\logFileEnablePrt.txt \"'";


    // Run command
    var p = new System.Diagnostics.Process();
    var psi = new ProcessStartInfo("CMD.exe", strCmdText);
    psi.Verb = "runas"; // admin rights
    p.StartInfo = psi;
    p.Start();
    p.WaitForExit();
  3. 但是,这不起作用。它总是返回一个空的日志文件,并且不会按预期更改设备:

         // Build String 
    string strCmdText =
    "'/c cd " + prodPath +
    " && devcon hwids =ports " +
    " > logs\\logFileEnablePrt.txt \"'";


    // Run command
    var p = new System.Diagnostics.Process();
    var psi = new ProcessStartInfo("CMD.exe", strCmdText);
    psi.Verb = "runas"; // admin rights
    p.StartInfo = psi;
    p.Start();
    p.WaitForExit();

cmd 窗口的错误是:

'devcon' is not recognized as an internal or external command,

可运行的程序或批处理文件。

发生了什么事?

上面的内容让我很困惑。我已经证明这些命令有效。我已经证明我的 C# 代码有效。但是当我将两者结合在一起时,它不起作用...

注意:我的 C# 程序在我的 D: 驱动器上运行,如果这有什么不同......

根据评论更新

@Compo使用您的代码,它的功能与我的完全相同。我看到一个空的日志文件并且没有对设备进行任何更改。我已经将/c 更改为/k,这样我就可以看到 cmd 终端上发生了什么,我看到了这个:

enter image description here

我什至试过你的代码 C:\\Windows\\System32\\devcon hwids =usb 直接指向 devcon。还尝试了\devcon.exe 的完整性。莫名其妙的错误是:

enter image description here

我可以在文件夹中看到正在翻转的 devcon.exe 文件!它有什么理由无法识别它吗?

此外,使用您编写的命令,日志文件名实际上被命名为 logFileEnablePrt.txt'。我同意你的命令看起来是正确的,所以不要问我为什么会这样!

enter image description here

@Panagiotis Kanavos使用您的代码,我收到以下错误:

enter image description here

这是在 p.Start(); 行。我尝试放入 devcon.exe,甚至是整个路径(我检查过该文件夹在我的 PATH 中,确实如此)。过不了这个实际上,我偶然发现了您分享的那个答案,并且已经到达了这堵砖墙。

最佳答案

这是适合我的代码,我没有端口设备,所以我将其更改为 USB。

public static void Main()
{
string prodPath = @"c:\devcon\x64";

// Build String
string strCmdText =
"/c \"cd /d " + prodPath +
" && devcon hwids =usb " +
" > log.txt \"";

// Run command
var p = new Process();
var psi = new ProcessStartInfo("CMD.exe", strCmdText);
psi.Verb = "runas"; // admin rights
p.StartInfo = psi;
p.Start();
p.WaitForExit();
}

关于c# - 从 Windows 窗体内部调用 devcon 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72105087/

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