使用C#,我希望我的应用程序返回文件夹(具有已知路径)是位于网络中还是位于我的计算机中.
我怎样才能做到这一点?
我使用FileVersionInfo.GetVersionInfo()得到一些严重的怪异,并希望有人可以提供帮助.
问题的基础是我正在遍历每个文件夹中调用GetVersionInfo()的所有文件.大约有300个文件.这适用于除2个文件之外的所有文件.对于这些DLL,我从GetVersionInfo()得到了完全不正确的信息.
为了消除所有其他变量,我将此调用提取到一个简单的测试应用程序中,它仍然遇到了同样的问题.但是,如果我将测试应用程序构建为Windows应用程序(最初是控制台应用程序),那么数据就会恢复正常.
只是为了澄清一下,当作为控制台应用程序运行时返回的不正确数据不仅仅是空信息,就像文件不包含版本数据一样.它包含合理的数据,但只包含错误的数据.就好像是从不同的文件中读取它一样.我找了一个包含匹配版本数据的文件,但找不到.
如果构建为控制台应用程序而不是Windows应用程序,为什么这个简单的调用功能会不同?
如果有人可以帮助我,我将非常感激.
安德,安迪
- 已添加代码
using System;
using System.Diagnostics;
namespace test
{
class Program
{
static void Main(string[] args)
{
string file = "C:\\ProblemFile.dll";
FileVersionInfo version = FileVersionInfo.GetVersionInfo(file);
string fileName = version.FileName;
string fileVersion = version.FileVersion;
Console.WriteLine(string.Format("{0} : {1}", fileName, fileVersion));
}
}
}
Run Code Online (Sandbox Code Playgroud) .net c# system.diagnostics console-application getfileversion
我知道如何使用jscript检索exe的版本,但我找不到任何方法来检索"公司","内部名称"或"产品名称"等其他信息.
function version_of( file_name )
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f;
try {
f = fso.GetFile( file_name )
} catch( e ) {
throw new Error( e.number, "Error retrieving version of file ``" + file_name + "'': " + e.description );
}
var v = fso.GetFileVersion( f );
if ( !v ) {
throw new Error( 1, "File ``" + file_name + "'' has not got a version" );
}
return v;
}
WScript.Echo( version_of( "c:\\windows\\system32\\winver.exe" ) ); …Run Code Online (Sandbox Code Playgroud) 我有一个包含版本资源的文件,其中填充了文件版本/产品版本字段。我需要通过 BAT 文件检索产品版本。例如,bat 文件的输出中有 ProductVersion 1.0.1 的文件,我不想有字符串“101”或“1.0.1”
我试图使用powershell来获取文件的文件版本.如果我右键单击该文件并查看该版本,则会显示一个值.以下是我尝试这样做的方法:
$path = "MSDE2000A";
$info = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path);
Run Code Online (Sandbox Code Playgroud)
这是它抛出的异常信息:
Exception calling "GetVersionInfo" with "1" argument(s): "MSDE2000A.exe"
At line:1 char:58
+ $f = [system.diagnostics.fileversioninfo]::getversioninfo <<<< ("MSDE2000A.exe")
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
Run Code Online (Sandbox Code Playgroud)
我检查的每个文件都有相同的结果.但是,如果我的路径是c:\ windows \notepad.exe(如示例中所示),它将按预期工作.这是怎么回事?
我正在使用Delphi XE7,我想将有关我的应用程序的一些信息记录到日志文件中,因此我需要将MSWindows中的GetFileVersionInfo移植到Android中.如果可能的话,我想要一个适用于任何文件的通用例程.我看到有一个如何在OSX中获取文件版本信息的Delphi示例,但我找不到任何指向相关Android单元的内容.有人可以帮忙吗?
c# ×2
.net ×1
android ×1
cmd ×1
delphi ×1
getfiles ×1
javascript ×1
powershell ×1
scripting ×1