wutangye 2017-03-13 06:57 采纳率: 100%
浏览 3935
已采纳

关于VS C# WinForm 下Application.StartupPath的疑惑

编写的程序在封装后,安装下测试机内,安装程序把程序安装在“C:\Program Files (x86)\公司名\软件名”下,程序启动时需要检查是否存在数据库文件“DATA.DB”,路径使用了“Application.StartupPath\data.db”来查找,如果不存在,则新建,还是用这个路径建立,但是新建“DATA.DB”时保存在了:

C:\Users\用户名\AppData\Local\VirtualStore\Program Files (x86)\公司名\软件名\data.db

测试1:把安装后的程序目录复制到桌面,目录里没有data.db,打开程序,在桌面的程序目录里自动建立data.db;
测试2:把安装后的程序目录更名为“软件名1”,启动程序,“DATA.DB”自动建立在:

C:\Users\用户名\AppData\Local\VirtualStore\Program Files (x86)\公司名\软件名1\data.db

证明:在“C:\Program Files (x86)”里的程序使用“Application.StartupPath”创建文件时都会保存在“C:\Users\用户名\AppData\Local\VirtualStore\Program Files (x86)\公司名\软件名”下。

百度:
這是虛擬轉儲,用途是如果應用程序沒有系統目錄的寫入權限,但是需要寫入文件時,系統就會把文件就會轉存到這裡,然後騙程序說存進去了,UAC就算關閉,這個功能也仍然存在(Windows目錄下的文件一律轉儲),這是爲了多用戶考慮的(任何用戶不能隨便修改系統關鍵目錄的文件).

测试3:用管理员身份启动程序,的确在“C:\Program Files (x86)\公司名\软件名”建立了数据库

疑问:测试3成功,但每次都要弹出UAC警告,由于要发送给多用户,不想说服多用户半闭UAC,怎么处理?

  • 写回答

2条回答 默认 最新

  • Tiger_Zhao 2017-03-13 07:51
    关注

    你以为是 Win98/XP 时代啊,一切任性。
    那个目录是安装程序用的,数据存放目录应该在 Application.CommonAppDataPathApplication.LocalUserAppDataPathApplication.UserAppDataPath中选一个。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog