当使用非管理员用户运行时,我的 C# 应用程序在某些情况下会崩溃。

我在使用 Windows Server 2003 时遇到问题,我正在尝试查找有关该问题的更多信息。这可能是其他 Windows 操作系统上的问题。

看来,如果我创建一个非管理员用户,然后使用“运行为...”命令在此用户下运行我的应用程序,则用户环境无法正确设置,并且 TEMP 环境变量指向 C :\Windows emp,而不是用户在文档和设置配置文件中拥有自己的 Temp 文件夹。用户没有此文件夹的权限,因此应用程序会因 .Net JIT 编译器尝试写入/读取此文件夹而崩溃。

如果我以这个用户登录,情况仍然是错误的。我没有准备好环境,就像登录新用户时通常会得到的那样,并且我的应用程序在启动过程中仍然无法运行而不会崩溃。事实上,我已经意识到用户无法运行 calc.exe 或 Windows 文件夹中的其他程序。看来他们的环境永远一团糟,我想唯一的出路就是删除他们的个人资料。

如果我创建一个非管理员用户,并在执行“运行为..”之前以他们的身份登录,那么他们的环境就设置好了,并且我的应用程序可以正常工作。

我找不到有关此问题的任何信息或有关 Microsoft 是否承认该问题的注释。您是否经历过这种情况,或者您知道我可以在哪里找到更多相关信息吗?

有帮助吗?

解决方案

如果您不这样做,请考虑使用带用户配置文件的 runas。

C:\temp>runas RUNAS USAGE:

RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]
        /user: program

RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]
        /smartcard [/user:] program

/noprofile指定不应加载用户的配置文件。这会导致应用程序更快地加载,但可能导致某些应用程序发生故障。
/配置文件指定应该加载用户的配置文件。这是默认设置。/env使用当前环境而不是用户的环境。/Netly使用指定的凭据仅用于远程访问。/SaveCred使用用户先前保存的凭据。此选项在Windows XP Home Edition上不可用,将被忽略。/SmartCard使用如果要从SmartCard提供凭据。/用户应为form user@domain或域用户
EXE 程序命令行。请参阅下面的示例

例子:

runas /noprofile /user:mymachine\administrator cmd runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc" runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\""

笔记:仅在提示时输入用户密码。笔记:用户@域与 /netonly不兼容。笔记:/配置文件与 /netonly不兼容。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top