2010-12-20 55 views
1

我的应用程序在连接或断开服务器时创建日志文件。这很好地赢得XP。无法以标准用户身份创建或写入文件

当我在Vista和Win 7中以管理员身份运行它时没有任何问题。但是如果我在Vista或Win7中以标准用户身份运行它,那么它将无法创建日志文件,而且我知道这是针对UAC的。

但是,我怎么能绕过这种情况,以便我的应用程序将以管理员身份运行。我是否需要在安装我的应用程序时添加任何注册表项,以便它始终以管理员身份运行。

回答

4

如果你真的想,你可以add a manifest,导致你的应用程序在启动时需要UAC提升,但更多的时候不是你应该做的。

更可能的是,你正在写一条你不应该的路。用户模式应用程序只能写入当前用户文件夹或C:\Users\Public文件夹,而日志等内容应该在C:\Users\Current User Name\Application Data\Your Program Name\中。要获取ApplicationData路径,请使用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)。或者,如果您想让所有用户共享该文件,请使用Environment.SpecialFolder.CommonApplicationData

+0

但我不希望日志和配置是不同的(主要是日志文件)不同的Windows用户 – Simsons 2010-12-20 07:40:07

+1

啊,在这种情况下,你需要System.Environment.SpecialFolder.CommonApplicationData,这是一个位置,应该是所有标准用户均可撰写。请记住,由于多个用户理论上可以同时运行您的应用程序(因为Win7具有用户切换功能),您需要允许多个编写者(请参阅:FileShare枚举)并处理并发写入的潜力,否则您需要打开并关闭每次写入的文件(可能会有perf影响)。 – 2010-12-20 07:48:55

+1

你真的很想让你的应用程序以标准用户身份运行,并且Paul给了你一些很好的建议 – 2010-12-20 08:08:57

相关问题