C#在 *** 作系统窗口中设置环境variables(不执行)

C#在 *** 作系统窗口中设置环境variables(不执行),第1张

概述C#在 *** 作系统窗口中设置环境variables(不执行

我需要添加一个windows环境variables,如现有的windows。 我的意思是 :

当您在cmd.exe中运行以下行时:

echo %appdata% //outputs something like C:/Users/blablabla // It's saved in windows by default !

我正在做一个简单的Winform应用程序,使用C#创buildwindows环境variables很容易

我努力了 :

有没有办法检测到“几乎”远程桌面断开连接(即短暂的高延迟时间)?

颜色字体字形

windows / .NET负载分配和平衡

如何发现哪个图像文件是windows上的当前桌面背景?

从任务栏图标最小化还原时无边界窗口激活的事件未触发

System.Environment.SetEnvironmentvariable("test","testvalue",EnvironmentvariableTarget.Machine);

我试过这个,但都没有:

const int HWND_broADCAST = 0xffff; const uint WM_SETTINGCHANGE = 0x001a; [Dllimport("user32.dll",SetLastError = true,CharSet = CharSet.auto)] static extern bool SendNotifyMessage(IntPtr hWnd,uint Msg,UIntPtr wParam,string lParam); using (var envKey = Registry.LocalMachine.OpenSubKey( @"SYstemCurrentControlSetControlSession ManagerEnvironment",true)) { Contract.Assert(envKey != null,@"registry key is missing!"); envKey.SetValue("artyom","TestValue"); SendNotifyMessage((IntPtr)HWND_broADCAST,WM_SETTINGCHANGE,(UIntPtr)0,"Environment"); } // it is assumed after this,the List should display this value,but nothing happens ! No exceptions,nothing

并阅读:

MSDN文档 – 其他链接在这里…

EnvironmentvariableTarget.Machine似乎没有任何帮助。

如果这个过程是成功的,我将能够在cmd.exe中做到这一点

echo %test% // and outputs "testvalue"

请记住,我正在testing所有这些代码,当用户点击一个button,我在WinForms的工作可以用C#做​​到这一点? 任何帮助表示赞赏,谢谢

什么时候我的进程被杀死了?

确定文件夹ACL是否从.NET中的特定date开始被修改

是否有可能从.NET中的全局键盘钩子中确定当前用户

为什么Graphics :: DrawImage不像预期的那样拉伸图像?

以编程方式启用windowsfunction的最佳方法是什么?

您可以尝试添加对NotifyUserEnvironmentvariableChanged的调用 – 但我认为我有混合的结果。

[Dllimport( "user32.dll",CharSet = CharSet.auto )] static extern bool SendNotifyMessage( IntPtr hWnd,string lParam ); public static voID NotifyUserEnvironmentvariableChanged() { const int HWND_broADCAST = 0xffff; const uint WM_SETTINGCHANGE = 0x001a; SendNotifyMessage( ( IntPtr )HWND_broADCAST,( UIntPtr )0,"Environment" ); }

从这里:

http://www.codeguru.com/cpp/wp/win32/tutorials/article.PHP/c10849/Setting-a-System-Environment-Variable.htm

变量是通过在这个键下创建一个新的值或者如果它已经存在的话修改一个值来添加的。 要删除变量,只需删除其注册表值,除非要删除部分扩展值(如PATH),在这种情况下,只需删除所需的部分。

此时,除非您注销或重新启动,否则windows将不会意识到您的更改。 为了解决这个问题,SetEnv将广播一个WM_SETTINGCHANGE到系统中的所有窗口。 这允许其他正在运行的应用程序(例如Explorer.exe)被通知您的更改。 如果从命令提示符运行SetEnv,则不会更新当前DOS窗口的环境变量。 这主要是由于一个进程(SetEnv)不能改变其父进程的环境(命令提示符)。 但是,您打开的任何新的DOS /命令提示符将显示新的变量/值。

广播这个消息会导致2-3秒左右的延迟(而打开的窗口处理它),所以看起来SetEnv已经挂起。 不是这种情况。

我相信我已经注意到延迟以及需要打开新的命令提示符的问题。

总结

以上是内存溢出为你收集整理的C#在 *** 作系统窗口中设置环境variables(不执行)全部内容,希望文章能够帮你解决C#在 *** 作系统窗口中设置环境variables(不执行)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1285141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存