当前位置: 首页 > 编程语言 > C#

Process.Startfilenameuse%temp%share

时间:2023-04-11 01:44:55 C#

Process.Startfilenameuse%temp%Forsomeweirdreasononthiscodefails:p.StartInfo.FileName=@"%temp%SSCERuntime_x86-ENU.msi";这段代码起到了作用:p.StartInfo.FileName=@"C:UsersUSERNAMEAppDataLocalTempSSCERuntime_x86-ENU.msi";我缺少什么原因?请注意,我只是复制了路径,我认为不需要其余代码,但无论如何我都会将其放入:Processp=newProcess();p.StartInfo.FileName=@"%temp%SSCERuntime_x86-ENU.msi";p.StartInfo.Arguments="/被动";p.开始();Process类不使用环境变量(即%temp%)扩展字符串。如果要使用环境变量来构造FileName属性,则必须获取环境变量(使用Environment类上的GetEnvironmentVariable方法)和GetEnvironmentVariable来执行替换,如下所示://Constructthepath.stringtemp=Environment.GetEnvironmentVariable("温度");stringpath=Path.Combine(temp,"SSCERuntime_x86-ENU.msi");//启动进程。Processp=newProcess();p.StartInfo.FileName=路径;p.StartInfo.Arguments="/被动";p.开始();此外,您可以将ExpandEnvironmentVariables方法与原始字符串一起使用,如下所示:p.StartInfo.FileName=Environment.ExpandEnvironmentVariables(@"%temp%SSCERuntime_x86-ENU.msi");char字符串的%temp%部分按字面解释,而不是用适当的环境变量替换。您需要手动扩展它vartemp=Environment.GetEnvironmentVariable("temp");varfileName=Path.Combine(temp,"SSCERuntime_x86-ENU.msi");p.StartInfo.FileName=文件名;命令外壳解析并评估%TEMP%。您可以使用Path.GetTempPath()和Path.Combine来实现这一点。p.StartInfo.FileName=Path.Combine(Path.GetTempPath(),@"SSCERuntime_x86-ENU.msi");您可以使用Environment.ExpandEnvironmentVariables在将字符串传递给Process类之前扩展字符串中的环境变量:p.StartInfo.FileName=Environment.ExpandEnvironmentVariables(@"%temp%SSCERuntime_x86-ENU.msi");这具有应用于任何环境变量(%APPDATA%、%COMMONPROGRAMFILES%等)和字符串中任何地方的额外好处(例如“%temp%%username%foo.txt”)试试这个:stringtempPath=Environment.GetEnvironmentVariable("温度");然后结束:p.StartInfo.FileName=Path.Combine(tempPath,"SSCERuntime_x86-ENU.msi");Casper先于我解释,但Process.Start方法基本上处理它而不是像shell那样处理它。以上就是C#学习教程:Process.Start文件名使用%temp%共享所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: