gpt4 book ai didi

C# 找不到指定的文件

转载 作者:行者123 更新时间:2023-11-30 14:41:02 24 4
gpt4 key购买 nike

您好,我正在尝试创建一个使用 msg.exe 通过网络发送消息的应用。

当我从 cmd 执行 msg 时,一切正常,但是当我使用我无法打开的表单打开 cmd 时,使用 cmd 转到 system32 文件夹并且该文件未显示在那里,但是当我正常浏览或使用 cmd 时它一切正常

在另一台计算机上测试它并且应用程序工作正常,在此 1 上运行 win 7 64 位。

这是我用来打开 cmd 的代码示例:

Process.Start("cmd");

我以管理员身份运行我也尝试直接从 msg.exe 执行它,这似乎是 64 位上的问题适用于所有 32 位系统但不是任何 64 位

编辑:好的,我发现运行 64 位时的问题 32 位应用程序无法在系统 32 文件夹中运行 64 位应用程序。当尝试访问此文件夹时,它会将您重定向到 %WinDir%\SysWOW64 解决方法是使用此路径 C:\Windows\Sysnative\file (%windir%\Sysnative)

最佳答案

问题中提到的解决方案是什么对我有用 - 在这里为后代发布可测试的解决方案:

public class Messenger : IMessenger
{
private readonly IProcessWrapper _process;

public Messenger(IProcessWrapper process)
{
_process = process;
}

public void SendMessage(string message)
{
var info = new ProcessStartInfo
{
WorkingDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "sysnative"),
FileName = "msg.exe",
Arguments = string.Format(@" * ""{0}""", message),
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = true,
Verb = "runas"
};
_process.Start(info);
}
}


public interface IProcessWrapper : IDisposable
{
IEnumerable<Process> GetProcesses();
void Start(ProcessStartInfo info);
void Kill();

bool HasExited { get; }
int ExitCode { get; }
}

关于C# 找不到指定的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4680045/

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