我在\ProgramFiles(x86)\MyAppFolder中有一个*.exe文件。
在x86应用程序中,我检查文件是否存在(64位系统)。 简单:
bool fileExists = File.Exists(@"\ProgramFiles(x86)\MyAppFolder\Manager.exe");
结果是:“fileExists == false”(实际上文件是存在的)。据我了解,这是虚拟化引起的问题。这个问题在这里有描述:here。没问题。
但下一段代码:bool fileExists = new FileInfo("\\Path").Exists;
"fileExists == true"
为什么第一种情况和第二种情况的结果不同?
var controller = new ServiceController(Product.ServiceName);
_manager.Enabled = controller.Status == ServiceControllerStatus.Running;
var info = new DirectoryInfo(Assembly.GetExecutingAssembly().Location);
var s = File.Exists(@"D:\TFS\GL_SOURCES\Teklynx_LPM\Dev\Server\Debug\Manager.exe");
string pathToManager = string.Empty;
if (info.Parent != null)
{
var pathToModule = info.Parent.FullName;
pathToManager = Path.Combine(pathToModule,"Manager.exe").Replace(" ",string.Empty);
}
//工作良好
var fileInfo = new FileInfo(pathToManager);
var managerSeparator = new ToolStripSeparator()
{
Visible = _manager.Visible = fileInfo.Exists // true
};
//无法工作
var managerSeparator = new ToolStripSeparator()
{
Visible = _manager.Visible = File.Exists(pathToManager ) // false
};
谢谢!
\\
而不是/
,并且... 那你的示例调用使用了不同的路径...? - crashmstr