Tag: 环境变量

如何在C#中获取完整的主机名?

我试过跟着它只是给我一个名字。 我想要全名。 防爆。 我的系统全名是“ sys101.home.homeconsultancy.lan ”。 以下代码只给我“ sys101 ”。 我想要完整的地址“ sys101.home.homeconsultancy.lan ”。 这是我的代码: string hostName = System.Net.Dns.GetHostName(); 我怎样才能获得完整的系统名称?

使用CreateProcessAsUser和CreateEnvironmentBlock创建进程后,不会设置Clientname

我编写了一个在本地系统帐户下运行的C#服务。 当用户登录到Terminalserver时,我用它来生成进程。 该服务实现OnSessionChange方法,并使用相应的SessionID接收SessionChangeDescription消息。 我使用此SessionID通过WTSQueryUserToken从用户获取访问令牌。 我将此标记转换为主标记并将其传递给CreateEnvironmentBlock以检索指向用户环境变量的指针。 经过一些进一步的准备工作后,我调用CreateProcessAsUser函数最终将我的进程作为最近登录的用户在winsta0\default桌面上生成。 当我使用ProcessExplorer调查该过程时,我发现进程上下文中没有CLIENTNAME环境变量。 然而,应用程序需要这个变量。 我不知道我做错了什么。 或许我错过了一些东西。 应该加载用户配置文件,因为我在用户登录时做出反应。 是否可能存在一些时间问题? 或者CLIENTNAME var是否以任何其他方式应用于进程? 以下是我调用CreateEnvironmentBlock函数的方法: private static IntPtr GetEnvironmentFromToken(IntPtr token) { // Get a pointer to the environment variables from the specified user access token IntPtr newEnvironment = IntPtr.Zero; if (!WinApi.CreateEnvironmentBlock(ref newEnvironment, token, false)) { newEnvironment = IntPtr.Zero; } return newEnvironment; } 如果您需要更多信息或代码示例,请随时提出。

启动后在C#中重新加载环境变量

我们收到了一个新的代码库,它使用了整个地方的环境变量。 他们指向项目根,资产,不同工具等等。不是最理想的情况,但它的工作原理。 然而,当到了尝试运行我们的自动构建时,它就变成了巨大的痛苦。 Windows似乎在创建进程时实例化环境变量,并且不会再次刷新这些值。 我们希望能够让我们的自动构建系统运行一个项目列表并按顺序构建每个项目。 这需要调用更改这些值的项目切换器。 完成此操作后,更改不会反映在当前正在运行的构建过程中。 有没有人知道任何C#命令/函数/等可用于在调用项目切换器后强制环境变量重新加载?

Environment.SetEnvironmentVariable需要很长时间才能在用户或计算机级别设置变量

我正在使用C#(。NET 3.5)中的Environment.SetEnvironmentVariable方法调用,如下所示: Environment.SetEnvironmentVariable(environmentVariable,value,“Machine”); 但是,在一些测试系统(运行XP和Windows 7)上,这个单个调用需要2秒多的时间。 我发现这可能是因为:“如果目标是User或Machine,则其他应用程序会通过Windows WM_SETTINGCHANGE消息通知设置操作。” 有没有办法将此通知抑制到其他应用程序,以便我的环境快速设置并返回..? 请注意,我有一个组件可以设置大约20个环境变量,如果我使用上面描述的function,则需要大约一分钟才能完成该任务。 请建议!!

.net在运行时确定我的应用程序是exe还是Web应用程序

我确信我以前做过这个,但我已经在文档中了一段时间,似乎无法再找到它。 我需要能够在我的业务领域的运行时确定我的应用程序运行的上下文。这样我可以使用配置文件进行一些切换,并使用正确的方法来确定我是在调试还是发布等运行。我非常有信心它在System.Environment中,但我还没有遇到它。

如何在C#中读取用户环境变量?

如何读取用户特定的环境变量? 我知道如何获得系统范围的,比如 Environment.GetEnvironmentVariable(“SOMETHING”); 提前致谢!

如何在C#中以编程方式引用C:\ Users \ Public目录

以编程方式引用公用文件夹是否安全: Directory = System.Environment.GetEnvironmentVariable(“public”)+”MyCompanyName” // etc. 或者,还有更好的方法? 再次,如果有人为公共删除环境变量,这对于不同的语言操作系统是否安全? 以下是: 如何从VS 2010部署安装项目安装到Windows 7中的Public目录

从Mac上的命令行运行ASP.NET 5应用程序时是使用launchSettings.json吗?

我正在使用Mac上的Visual Studio代码开发ASP.NET 5 Web API应用程序。 我手动修改了我的Properties/launchSettings.json文件,使用ASPNET_ENV环境变量将环境设置为Staging for all profiles: 但是,当我在Mac终端上运行dnx web来启动应用程序时,我仍然得到了Production环境: 如果我在Mac上使用Visual Studio Code,是否可以使用launchSettings.json指定环境变量(以及环境类型)? 或者它是否特定于完整的Visual Studio? ASP.NET 5文档建议 launchSettings.json可用于注入环境变量。 然而, 这个SO讨论建议通过命令传递它们。

如何在环境变量中正确存储连接字符串,以便通过生产ASP.Net Core MVC应用程序进行检索

我正在使用ASP.NET Core MVC应用程序,我的连接字符串存在问题。 我在生产服务器ASPNETCORE_ENVIRONMENT变量设置为Production ,而我的生产服务器是运行IIS的Windows Server 2012R2。 我还在生产服务器上安装了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 supported: ‘”server’. at System.Data.Common.DbConnectionOptions.ParseInternal(Dictionary`2 parsetable, String connectionString, Boolean buildChain, Dictionary`2 synonyms) at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Dictionary`2 synonyms) at System.Data.SqlClient.SqlConnectionString..ctor(String connectionString) 如果我将连接字符串放在appSettings.json ,生产服务器就可以正常工作。 所以,这是我的appSettings.json文件的一个示例,显示了在生产中工作的连接字符串; { “ConnectionStrings”: { “TestDb”: […]

SpecialFolder.MyDocuments在控制台应用程序中提供正确的值,但在Windows服务上没有

我的机器上运行了一个Windows服务。 当我做的时候 Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments) 它给了我空字符串,但当我在控制台应用程序中执行相同的操作时,它为我提供了MyDocuments文件夹的正确位置。 关于它为什么会发生的任何想法?