C# 如何在兼容模式下从代码执行程序?

C# 如何在兼容模式下从代码执行程序?,c#,compatibility,windows-server-2008-r2,C#,Compatibility,Windows Server 2008 R2,环境:Windows Server 2008 R2 64位 我有一个与Windows Server 2003 SP1兼容模式兼容的程序。但是,当我尝试使用C#执行此程序时,程序出错 我认为这是因为当从另一个程序调用时,它没有在兼容模式下运行。我使用我的代码中的Process.Start(pathToExe)来启动这个程序 我试图在兼容模式下运行调用程序,以检查这是否能使程序正确运行 请注意,我已从属性| compatibility将程序设置为兼容。我不确定我是否完全理解您的问题,但如果您希望始终

环境:Windows Server 2008 R2 64位

我有一个与Windows Server 2003 SP1兼容模式兼容的程序。但是,当我尝试使用C#执行此程序时,程序出错

我认为这是因为当从另一个程序调用时,它没有在兼容模式下运行。我使用我的代码中的
Process.Start(pathToExe)
来启动这个程序

我试图在兼容模式下运行调用程序,以检查这是否能使程序正确运行


请注意,我已从属性| compatibility

将程序设置为兼容。我不确定我是否完全理解您的问题,但如果您希望始终在兼容模式下运行程序,可以设置注册表使其正常工作

注册表项:
HKEY\U LOCAL\U MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

使用,
添加新的字符串条目 名称:完整的应用程序路径。
类型:REG_SZ
数据:所需的兼容值。我认为您的情况是
WIN2003
WIN2003SP1

示例:

C:\Program Files\System32\Notepad.exe REG_SZ WIN2003


您可以检查正在运行的当前操作系统版本,并且可以在调用程序之前设置和取消设置此注册表值。

它可能会正常工作,但通常在开始时有一个波浪号
~
,后跟空格。比如
~WIN2003
。Src:Chapter
在注册表编辑器中手动更改应用程序的兼容性模式设置