我想在 Winforms 应用程序 (c++/cli) 中启动默认的 Windows 录音。在“运行”对话框中,Vista/7 的命令是“录音机”。所以我从最简单的方法开始:
System::Diagnostics::Process::Start("soundrecorder");
但它会引发 System.ComponentModel.Win32Exception(消息:系统找不到指定的文件)。所以我使用了真实的路径:
String^ path = Environment::GetFolderPath(Environment::SpecialFolder::System);
path = System::IO::Path::Combine(path, "soundrecorder.exe");
System::Diagnostics::Process::Start(path);
结果相同。硬编码完整路径也失败了。像“mspaint”这样的任何其他命令都可以正常运行。
我认为问题出在我的环境/当前用户/机器上。然后我用 C# 编写了一个愚蠢的程序:
public abstract class StupidProgram{
public static void Main(string[] args)
{
Process.Start("soundrecorder");
}
}
它可以工作,甚至更多:如果我从我的应用程序运行“StupidProgram.exe”,它也可以工作。
该应用程序在 C++/CLI 中编码为 32 位程序。我正在使用 Windows 7 64 位。我在 Windows 7 32 位中测试了该应用程序并且它可以工作,因此它接缝了 32/64 位兼容性问题。
您对这种行为有任何想法吗?