【问题标题】:setting the system time with C#.NET without using kernel32.dll使用 C#.NET 设置系统时间而不使用 kernel32.dll
【发布时间】:2011-02-18 07:29:05
【问题描述】:

有没有办法在不使用 kernel32.dll 的情况下在 C#.NET 中设置系统时间?

我在 64 位系统上,调用设置时间函数似乎为我返回“false”。

【问题讨论】:

  • 您的问题不正确。应该是When I try set the system time using p/invoke XXXX I get an error saying YYY, how do I correct the method call? 寻求解决方法是错误的方法。
  • 你在提升吗?那必须到位...... - 搞砸时间是一项特权操作

标签: .net pinvoke kernel32 systemtime


【解决方案1】:

.NET 框架通常不关心这种性质的低级系统管理问题。

这里的问题是,你不能在不告诉我们为什么它对你很重要的情况下提出这样的问题,这样人们就可以正确地为你提供答案,而不必通灵。

为什么需要这样做?会更快吗?您是否担心 DLL 可能不在系统上:D

找出答案的一种方法是使用 Reflector(趁热得到它)来查找 kernel32 方法名称 - 很可能任何包装它的东西都将使用 P/Invoke,除非他们付钱给愚蠢的虫子为包装存根使用相同的名称。

【讨论】:

  • 我不喜欢文件 kernel32.dll 的名称。文件名看起来很奇怪,因为我正在编写一个 64 位程序。我正在寻找一种解决方法,因为您建议可能缺少 DLL。
  • @broiyan:我对文件可能因某种原因而丢失的建议笑了笑。 Syswow64 和朋友们一起,system32 并不总是意味着“这里有 32 位文件”,这是在文件名中不采用 32 和 64 的众多原因之一。我建议阅读 Raymond Chen 的博客 (thatoldnewthing.com) 上的 32/64 文章以获得良好的背景知识。
【解决方案2】:

尝试以管理员身份运行或禁用 UAC - 如果有的话-

【讨论】:

    猜你喜欢
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2017-05-27
    相关资源
    最近更新 更多