驱动器,我有我的Windows 7机器上完全管理员权限,但是当我跑我的应用程序,创建了基于C文件:\驱动器,我得到错误代码5(访问被拒绝)。我知道Windows 7不允许在受保护区域创建文件,如c盘和程序文件,如果我从其他位置复制文件,文件浏览器会弹出'管理'消息框,之后它允许但我的应用程序可以获得写入级别访问?访问C: Windows 7上
在我的应用程序,用户将获得挑选他们想要的,所以如果他们选择C创建文件的文件夹:\驱动器,他/她就会明显得到这个错误,这是不可取的。
void CTestDlg::OnBnClickedButtonCreate()
{
CFile f;
CFileException e;
TCHAR* pszFileName = _T("c:\\test.txt"); // here i am hard coding path for simplicity.
if(!f.Open(pszFileName, CFile::modeCreate | CFile::modeWrite, &e))
{
TRACE(_T("File could not be opened %d\n"), e.m_cause);
}
}
据我研究,似乎我无法绕过UAC对话框这是很好的,但我的应用程序甚至不存在它(这是可以理解为好),但我有哪些选择?
我看到我唯一的选择是在我自己的应用程序中检测到这一点,如果这是Windows 7操作系统,并且在创建文件之前检查文件路径并提供更友好的用户消息“Windows 7不喜欢你创建文件在这个文件夹中,选择一个不同的文件夹或返回到XP'。这个计划是在Windows 7上走的路吗?有没有其他方法?
[Windows 7是否与Vista有相同的问题?](http://stackoverflow.com/questions/5210575/does-windows-7-have-the-same-problem-as-vista) – 2012-02-17 17:57:17
不,您唯一的选择是使用* Windows * *和* Windows XP中的相应文件夹。这将是用户的文件夹之一,而不是磁盘的根目录。切勿将东西放入磁盘的根目录中。 – 2012-02-17 17:57:57
@CodyGray他们不一样,但他们都与UAC有关。 – zar 2012-02-17 19:30:23