应用.配置设置,环境变量作为部分路径
我是新手修补app.config和xml的新手,目前正在对一些我写的代码进行一些重构. 目前,我们有一个看起来像这样的片段: Data Source=C:\Documents and Settings\All Users\ApplicationData\Company ...;Persist Security Info=False 我想做的就是将其指向${PROGRAMDATA}\Company\... 之类的东西 我该如何实现这一目标,请记住programData不会总是指向C:\ProgramData? 解决方案 我真的不想根据其他响应在代码中更改它,因为这删除了将其作为配置设置的目的. 事实证明,%ProgramData%\Company...是在这种情况下使用环境变量的正确方法. 其他解决方案 使用 E
0 2024-04-16
编程技术问答社区
从.NET 6中的构建器设置中访问当前环境(开发,生产等)
我正在.NET 6中构建一个应用程序,该应用程序使用基于身份验证和基于策略的授权.两者都可以很好地发挥作用.但是,我需要创建一种在开发环境中绕过授权的方法.以下是我的代码 program.cs . 我创建了一个可以禁用授权的类,并将其添加到构建器builder.Services.AddSingleton();这效果很好,现在我需要做的就是使其有条件地符合"开发"的环境.我的问题是,我不知道如何从构建器中的中获取当前的环境(我确实知道一旦建造了它如何做 - 例如,app.Environment.IsDevelopment()). 我已经在线搜索了,但是我可以找到的所有解决方案都涉及注入startup()和configureservices()方法 - 两者都被.net 6中的 webapplication.createbuilder webapplication . 在构建应用程序之
0 2024-04-16
编程技术问答社区
在C#中为一个新用户创建环境变量
我们正在尝试在Wix中为产品构建一个安装程序.该产品的一部分需要安装Elasticsearch作为服务,并将其作为服务运行.该服务应在单独的用户帐户下运行. 获得设置用户帐户的第一步已经成功.但是,为了允许Elasticsearch正确运行,我们需要设置某些环境变量.为了减少无意间用户错误的机会,我们必须在Elasticsearch用户下设置这些变量,而不是在机器范围内设置. 为此,我们需要一种仅在指定用户下创建变量的方法.但是,我们尚未能够使用WIX或C#扩展. 我们最接近的是在C#中查询ManagementObject并发现我们ELASTICUSER的SID.从理论上讲,我们应该能够在"HKEY_USERS\\Environment"下为注册表编写另一个环境变量. . var query = new SelectQuery("Win32_UserAccount"); var manObjSearch = new Mana
0 2024-04-16
编程技术问答社区
我如何通过环境路径找到一个可能没有完全限定的文件?
我有一个可执行的名称,例如cmd.exe,需要解决其完全合格的路径.我知道EXE出现在PATH环境变量中列出的目录之一中.有没有办法在不解析和测试PATH>变量中的每个目录的情况下解决整个路径?基本上我不想这样做: foreach (string entry in Environment.GetEnvironmentVariable("PATH").Split(';')) ... 必须有更好的方法,对 解决方案 这似乎已经是一种很好的方法 - 据我所知,浏览PATH>环境变量中的目录是Windows试图解决路径时所做的. 其他解决方案 这是另一种方法: string exe = "cmd.exe"; string result = Environment.GetEnvironmentVariable("PATH") .Split(';') .Where(s => File.Exists(Path.Combine(s, exe)))
2 2024-04-15
编程技术问答社区
我如何通过环境路径找到一个可能没有完全限定的文件?
我有一个可执行的名称,例如cmd.exe,需要解决其完全合格的路径.我知道EXE出现在PATH环境变量中列出的目录之一中.有没有办法在不解析和测试PATH>变量中的每个目录的情况下解决整个路径?基本上我不想这样做: foreach (string entry in Environment.GetEnvironmentVariable("PATH").Split(';')) ... 必须有更好的方法,对 解决方案 这似乎已经是一种很好的方法 - 据我所知,浏览PATH>环境变量中的目录是Windows试图解决路径时所做的. 其他解决方案 这是另一种方法: string exe = "cmd.exe"; string result = Environment.GetEnvironmentVariable("PATH") .Split(';') .Where(s => File.Exists(Path.Combine(s, exe)))
0 2024-04-15
编程技术问答社区
如何在C#中以编程方式引用C:\Users\Public目录?
可以通过以下方式编程地引用公共文件夹是安全的: Directory = System.Environment.GetEnvironmentVariable("public")+"MyCompanyName" // etc. 还是有更好的方法? 再次,如果某人删除环境变量为公众,这是否安全用于不同的语言? 这就是以下内容:如何通过VS 2010部署设置项目在Windows 7中安装公共目录 解决方案 这取决于您要实现的目标. 有一个名为 System.Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory) 指向" c:\ users \ public \ desktop". IMHO,您的方式并没有错,尽管我会做一些例外处理,以防Envvar确实缺少. 另外,您可以将枚举与" Consondesktopdirectory"一起使用,并摆脱" \桌面"部分
0 2024-04-14
编程技术问答社区
在Mac上从命令行运行ASP.NET 5应用程序时,是否使用 launchSettings.json?
我正在使用Mac上的Visual Studio代码开发ASP.NET 5 Web API应用程序.我将我的Properties/launchSettings.json文件手动修改为使用ASPNET_ENV环境变量的所有配置文件的环境设置为Staging: 但是,当我在Mac终端运行dnx web以启动应用程序时,我仍然会得到Production环境: 如果我在Mac上使用Visual Studio代码,我可以使用launchSettings.json指定环境变量(以及环境类型)吗?还是特定于完整的Visual Studio? asp.net 5 docs 建议 launchSettings.json可以是用于注入环境变量.但是,如此讨论建议通过命令进行通过./p> 解决方案 启动stettings.json严格来说是一个vs概念.在其他情况下,您必须像下面的命令一样配置环境变量: 对于标准命令行运行,使用: set ASPNET_ENV=Development
0 2024-04-14
编程技术问答社区
我如何在C#中找到我的机器的完全合格的主机名?
ex:我想要诸如abc.hyd.mycompany.com之类的东西.我的要求是解析此名称并初始化适当的服务. using System.Net; Dns.GetHostName() // doesn't return fully qualified name it just gives "abc" 解决方案 您可能能够像这样获得整个DNS字符串: System.Net.Dns.GetHostEntry("").HostName 我们没有完整的DNS名称,但它确实为我提供了三个级别的人造域名,而不仅仅是主机名. 编辑2011/03/17:以下Mark建议的合并更改. 其他解决方案 我使用了这种非常相似的方法: var serverName = System.Environment.MachineName; //host name sans domain var fqhn = System.Net.Dns.GetHostEntry(server
2 2024-04-13
编程技术问答社区
如何用.NET远程扩展环境变量?
我需要一种在远程计算机上扩展环境变量的方法. 假设我有通往文件夹的路径%appdata%\MyApp\Plugins或%ProgramFiles%\MyCompany\MyApp\Plugins,我想在该文件夹中列出文件以进行审核.唯一的问题是我想在远程计算机上进行操作,但是我已经访问了管理员. 一个额外的问题(但不是必需的)是如何对远程计算机上给定的用户做到这一点? 解决方案 您将使用 getfolderpath .有很多不同的 specialfolder 您可以使用的值,包括ProgramFiles>和ApplicationData string path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); 然后,您可以将其与其余路径结合 string full_path = Path.Combine(path, "\MyApp\Plugins"); 在远程计
0 2024-04-12
编程技术问答社区
PATH变量的GetEnvironmentVariable()和SetEnvironmentVariable()。
我想用C#程序扩展当前路径变量.在这里我有几个问题: 使用GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine)代替占位符(即'%SystemRoot%\system32'被当前路径'C:\Windows\system32'替换).更新路径变量,我不想用路径代替占位符. SetEnvironmentVariable SetEnvironmentVariable SetEnvironmentVariable无法再从命令框打开任何程序(即命令框中的calc.exe不起作用).我正在使用以下代码: String oldPath = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine); Environment.SetEnvironmentVariable("PATH", oldPath + ";%MY
0 2024-04-12
编程技术问答社区
如何正确地将连接字符串存储在环境变量中,供生产型ASP.Net Core MVC应用程序检索使用
我正在处理ASP.NET Core MVC应用程序,并且我的连接字符串有问题. 我在生产服务器上的ASPNETCORE_ENVIRONMENT变量设置为Production,而我的生产服务器是Windows Server 2012R2运行IIS.我也有dotnetcore.1.0.4_1.1.1-windowshosting.exe安装在生产服务器上. 在开发过程中,我使用UserSecrets握住我的连接字符串.这正常工作. 对于生产,我希望我的生产服务器上的环境变量中的连接字符串,这是我遇到问题的地方.我怀疑这可能是我构建环境变量的方式. 当我尝试在生产中访问数据库时,我会发现一个错误,基本上表明它不能解析连接字符串. An exception occurred in the database while iterating the results of a query. System.ArgumentException: Keyword not su
0 2024-04-12
编程技术问答社区
什么决定了Path.GetTempPath()的返回值?
目前,我使用Path.GetTempPath()弄清楚在哪里写我的日志文件,但是最近我遇到了用户的计算机,那里的路径不是我所期望的. 通常,返回的路径为 c:\文档和设置\ [userId] \本地设置\ temp 但是在这种情况下,它是 c:\ temp 这通常不是问题,但是由于某种原因,所讨论的用户无法访问写入 c:\ temp i仔细检查了环境变量,用户环境变量指向 c:\文档和设置\ [userId] \本地设置\ temp ,而系统环境变量指向到 c:\ winnt \ temp . 那么... Path.GetTempPath()从哪里获得价值?组策略?注册表? 我已经搜索过,但无济于事. 解决方案 (使用反射器)Path.GetTempPath()最终调用win32函数 getTemppath (来自kernel32.dll).此状态的MDSN文档: getTemppath函数检查以下顺序存在环境变量的存在,并使用第一个路径:
0 2024-04-12
编程技术问答社区
在文件路径中使用环境变量
我有一个环境变量集,该设置指向一个特定文件夹(例如,称其为myFolder).在%MYFOLDER%\SubFolder中输入Windows Explorer时,将出现子文件夹.但是,当我将SelectedPath = @"%MYFOLDER%\SubFolder";传递给FolderBrowserDialog时,它不起作用. 我尝试使用Path.GetFullPath(..),但这似乎返回了可执行文件的bin文件夹(而在VS中进行调试),最终以%myFolder%返回,而不是我期望的路径. 有人知道如何正确使用环境变量? 解决方案 首先展开它: string path = Environment.ExpandEnvironmentVariables(value); http://msdn.microsoft .
0 2024-04-12
编程技术问答社区
Environment.GetEnvironmentVariable无法找到变量值
如果呼叫是由IIS上托管的WebMethod内部进行的,为什么Environment.GetEnvironmentVariable("variableName") Environment.GetEnvironmentVariable("variableName")如果我从同一台计算机上的控制台应用程序调用它? ,它将起作用? 我在哪里可以设置这些变量,以便IIS Web服务可见?我应该使用Environment.GetEnvironmentVariable(name, target)的第二个参数来获取吗? 实际上真的很简单: [WebMethod(Description = "Gets the environment variable value.")] public string GetEnvironmentVariable() { return Environment.GetEnvironmentVariable("VARIABLE_NAME_HERE")
0 2024-04-11
编程技术问答社区
如何在.NET核心中设置一个全局环境变量(全用户或全系统)。
在全.net中,我们可以将EnvironmentVariableTarget枚举传递给Environment.SetEnvironmentVariable致电: public enum EnvironmentVariableTarget { Process, User, Machine } 使用User或Machine选项,我们可以设置一个在应用程序结束后保持现场直播的用户范围或系统范围的变量: Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.User); ... > echo %foo% bar 但是,Environment.SetEnvironmentVariable不接受.NET核心中的变量目标.甚至XML评论此方法都说: 创建,修改或删除存储在当前 Process 的环境变量. . 如何在.NET核心目标应用程序中设
0 2024-04-11
编程技术问答社区
C#设置环境变量
我使用C#设置环境变量有问题. 我需要在某些情况下修改某些环境变量.例如,我需要修改NDSRC变量. 我使用: Environment.SetEnvironmentVariable("MY_VARIABLE", "value", EnvironmentVariableTarget.Machine); 这很好. 接下来,我运行一些脚本使用该变量.现在有一个问题,因为脚本看不到变量. 示例: 使用 设置路径变量(在末尾添加目录) string path = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.Machine) + ";c:\\"; Environment.SetEnvironmentVariable("Path", path, EnvironmentVariableTarget.Machine); 打开Windows命令行(start-> run->
0 2024-04-11
编程技术问答社区
为一个进程设置环境变量
环境变量概念是什么? 在C#程序中,我需要调用可执行文件.可执行文件将调用其他位于同一文件夹中的可执行文件.可执行文件依赖于两个环境变量"路径"和"射线路径"才能正确设置.我尝试了以下两件事: 我创建了一个过程,并在StartInfo中设置两个变量.这 变量已经存在,但缺少所需的信息. 我试图用 system.environment.setenvironmentvariable(). 运行该过程时,系统找不到可执行文件("可执行1").我试图将startInfo.fileName设置为"可执行1"的完整路径 - 但是,在"可执行1"中未找到称为表单的exe文件... 我该如何处理? string pathvar = System.Environment.GetEnvironmentVariable("PATH"); System.Environment.SetEnvironmentVariable("PATH", pathvar + @";C:\UD_\b
2 2024-04-11
编程技术问答社区
如何在C#中设置系统环境变量?
我正在尝试在我的应用程序中设置系统环境变量,但要获取SecurityException.我测试了我在Google中发现的所有内容 - 没有成功. 这是我的代码(请注意,我是PC的管理员,并运行VS2012作为管理员): 尝试1 new EnvironmentPermission(EnvironmentPermissionAccess.Write, "TEST1").Demand(); Environment.SetEnvironmentVariable("TEST1", "MyTest", EnvironmentVariableTarget.Machine); 尝试2 new EnvironmentPermission(EnvironmentPermissionAccess.Write, "TEST1").Demand(); using (var envKey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentC
4 2024-04-10
编程技术问答社区
如何设置ASPNETCORE_ENVIRONMENT以考虑发布ASP.NET Core应用程序
当我将我的ASP.NET核心Web应用程序发布到本地文件系统时,它总是将生产构成和Aspnetcore_environment变量带有值="生产". 我必须如何以及在哪里设置Aspnetcore_environment变量的价值,以便不仅可以考虑调试,还可以将其视为 ?我已经尝试了以下选项而没有成功: 在Windows设置中 在文件中 .pubxml file 在文件中 在文件中 project.json 解决方案 有几个解决方案: 使用dotnet publish 的命令行选项 此外,我们可以将属性EnvironmentName作为命令行选项传递给dotnet publish命令.以下命令在 web.config 文件中包含Development的环境变量: dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development 修改项目文件(.csproj)文件 msbuil
0 2024-04-10
编程技术问答社区
我如何在C#中获取和设置环境变量?
如何获得环境变量以及如果缺少某些内容,请设置值? 解决方案 使用 system.environment.environment 类. 方法 var value = System.Environment.GetEnvironmentVariable(variable [, Target]) 和 System.Environment.SetEnvironmentVariable(variable, value [, Target]) 将为您完成这项工作. 可选参数Target是类型EnvironmentVariableTarget的枚举,它可以是:Machine,Process或User之一.如果省略它,默认目标是当前过程. 其他解决方案 获取并设置 获取 string getEnv = Environment.GetEnvironmentVariable("envVar"); set string setEnv = En
2 2024-04-10
编程技术问答社区